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.