You are on page 1of 5

KANO STATE POLYTECHNIC

DEPARTMENT OF COMPUTER SCIENCE


LECTURE NOTE
SESSION: 2023/2024
COURSE CODE: 212
COURSE TITTLE: INTRODUCTION TO SYSTEM PROGRAMMING
PROGRAM: ND II (A)
Definition and Scope
• Overview of System Programming:
• System programming involves the creation of software that directly
interacts closely with the hardware and manages system resources.
• It focuses on tasks such as memory management, file system
operations, and process control.
Unlike application programming, which is concerned with creating end-
user software, system programming lays the groundwork for the
functioning of the entire system.
• Distinction between Application and System Programming:
• Application Programming: Involves creating software applications
for end-users.
• System Programming: Focuses on building software that facilitates
and manages the execution of applications and interactions with
hardware.

Understanding the distinction between application and system


programming is crucial. Application programming involves creating
software applications that users directly interact with, such as word
processors or games. On the other hand, system programming deals
with the infrastructure that supports these applications. It ensures that
the hardware and software work together seamlessly, providing a
stable and efficient environment for applications to run.
1.2 Importance of System Programming
• Role in Software Development:
• System programming is foundational to software development,
providing the necessary infrastructure for applications to run
efficiently.
• It bridges the gap between high-level applications and low-level
hardware.

System programming plays a pivotal role in the overall software


development process. It provides the necessary foundation and
infrastructure for applications to run efficiently. Without robust system
programming, applications might struggle to access resources,
manage memory, or communicate with hardware effectively.
• Examples of System Programming Applications:
• Operating Systems: The core system software that manages
hardware resources and provides a platform for application execution
(e.g., Windows, Linux, macOS).
• Device Drivers: Programs that enable communication between the
operating system and hardware devices (e.g., printer drivers, graphics
drivers).
1.3 Historical Perspective
• Evolution of System Programming:
• System programming has evolved alongside advancements in
hardware and computing technology.
• Initially focused on basic input/output operations and memory
management.
• Milestones in the Development of System Software:
• 1950s-1960s: Introduction of assembly languages and early operating
systems (e.g., IBM 704, UNIVAC I).
• 1970s: Emergence of high-level languages (C language) and Unix
operating system.
• 1980s-1990s: Graphical User Interfaces (GUIs) introduced (e.g.,
Windows, macOS).
• 2000s-Present: Proliferation of open-source operating systems (e.g.,
Linux) and virtualization technologies.
Evolution of System Programming:
The history of system programming can be traced back to the early days of
computing when assembly languages were used for basic input/output operations.
Over the years, system programming has evolved alongside hardware
advancements. Milestones include the introduction of high-level languages like C,
the development of Unix, the advent of graphical user interfaces, and the rise of
open-source operating systems like Linux.

Milestones in the Development of System Software:


Understanding key milestones in the development of system software provides
insights into the evolution of computing. From the early days of assembly
languages to the current era of open-source operating systems, each milestone
represents a significant leap forward in the capabilities of system programming.
These milestones have shaped the computing landscape and continue to influence
the way we interact with technology today.
Basics of Computer Architecture
2.1 Von Neumann Architecture
Fundamental Explanation: Basic Concepts of Computer Architecture
Overview of Von Neumann Architecture:

Named after mathematician and computer scientist John von Neumann.


Fundamental model for the design of modern computers.
The Von Neumann Architecture provides a foundational model for understanding
the structure and functioning of modern computers. Named after John von
Neumann, this architecture consists of key components, including a central
processing unit (CPU), memory, and a control unit. In this architecture, instructions
and data share the same memory, and the CPU follows a sequential execution
process known as the Fetch, Decode, Execute, and Store (FDES) cycle.
Key Components:

Memory: Single storage structure for both data and instructions.


Central Processing Unit (CPU): Executes instructions fetched from memory.
Control Unit: Manages the control signals to coordinate activities, ensuring the
proper execution of instructions.
Sequential Execution: Instructions are processed one after another in a sequential
manner. Instructions are processed sequentially, following the FDES cycle. While
this sequential processing simplifies design and programming, it can potentially
lead to inefficiencies, especially in handling complex tasks.
Fetch, Decode, Execute, Store (FDES) cycle.
Advantages and Limitations:
Advantages: Simplicity in design and ease of programming. making it easier for
software development.
Limitations: Potential for bottlenecks due to sequential processing. especially in
handling complex and parallel tasks.
CPU, Memory, and I/O
High-Level Overview: Basic Understanding without Intricate Details
CPU (Central Processing Unit):
Acts as the brain of the computer, executing instructions. It consists of the
Arithmetic Logic Unit (ALU) for mathematical and logical operations and the
Control Unit, which manages control signals. The CPU fetches instructions from
memory, processes them, and produces the desired output.
Comprises Arithmetic Logic Unit (ALU) and Control Unit.
Memory: Stores data and instructions for the CPU to access. Acts as a unified
storage unit for both data and instructions. This simplifies programming but may
lead to bottlenecks in processing due to sequential execution.
Types: RAM (Random Access Memory) for temporary storage, ROM (Read-Only
Memory) for permanent storage.
I/O (Input/Output): Facilitates communication between the computer and
external devices.
Examples: Keyboard, mouse, printer, etc. The CPU coordinates data transfer
between memory and external devices through I/O operations.
High-Level Interaction:
CPU fetches instructions from memory and processes them.
Data is transferred between memory and external devices via I/O.
Importance of Coordination: The seamless coordination between CPU, memory,
and I/O is essential for effective computer operation.

You might also like