Advanced
Computer Architecture
Lecture 2
HW and SW Overview
Systems software: It is a type of program that is designed to run a computer
hardware and application program. Software that provides services that are
commonly useful, including operating systems, compilers, loaders, and
assemblers. There are many types of systems software, but two types of systems
software are central to every computer system today:
◦ Operating system: interfaces between a user’s program and the hardware and
provides a variety of services and supervisory functions. Among the most
important functions are
Handling basic input and output operations
Allocating storage and memory
Providing services for protected sharing of the computer among multiple
applications using it simultaneously.
◦ Examples of operating systems in use today are Linux, MacOS, and Windows
From HLL to HW language
◦ Compiler: A program that translates high-level language
statements into assembly language Statements
◦ Assembler: A program that translates a symbolic version of
instructions into the binary version.
A simplified view of hardware and software
FIGURE :C program compiled into assembly language and then assembled into
binary machine language.
HLL
High-level programming language: A portable language
such as C, C++, Java, or Visual Basic that is composed of
words and algebraic notation that can be translated by a
compiler into assembly language.
Advantages:
◦ They allow the programmer to think in a more natural language,
using English words and algebraic notation e.g. Fortran was designed
for scientific computation, Cobol for business data processing
◦ The second advantage of programming languages is improved
programmer productivity
◦ The final advantage is that programming languages allow programs
to be independent of the computer on which they were developed
Application Software: consists of programs designed to
perform specific tasks for users. It can be used as a
productivity or business tool. It also includes such as
Database program, web Browsers etc.
◦ Engineering/scientific software — Scientific and engineering
software satisfies the needs of a scientific or engineering user to
perform enterprise-specific tasks. Developers of scientific software
range from scientists who do not possess any software engineering
knowledge to experienced professional software developers with
considerable software engineering knowledge.
◦ Embedded software— Resides within a product or system and is
used to implement and control features and functions for the end user
and for the system itself. Embedded software can perform limited
and esoteric functions (e.g., key pad control for a microwave oven)
or provide significant function and control capability (e.g., digital
functions in an automobile such as fuel control, dashboard displays,
and braking systems).
◦ Product-line software —designed to provide a specific capability
for use by many different customers. Product-line software can focus
on a limited and esoteric market place (e.g., inventory control
products) or address mass consumer.
◦ Web/Mobile applications — applications for mobile devices that
require only a Web browser to be installed on the device. ... Mobile
Web applications differ from mobile native applications, in that they
use Web technologies and are not limited to the underlying platform
for deployment e.g. Snapchat, Instagram
◦ Artificial intelligence software— “Software that is capable of
intelligent behavior.”
◦ makes use of algorithms to solve complex problems that are not
amenable to computation or straight forward analysis. Applications
within this area include robotics, expert systems, pattern recognition
(image and voice), artificial neural networks, theorem proving, and
game playing.