Notes on System Software and Virtual Machines
System Software and Virtual Machines
Introduction to System Software
The naked machine: A computer without any tools or programs.
Users must write instructions and load them into memory manually.
This task became unmanageable, necessitating the development of interfaces.
System Software Overview
Definition: A collection of programs that manage computer resources and facilitate user interaction with the hardware.
Virtual Machine: System software creates a virtual machine that simplifies the user experience.
Types of System Software
Operating System (OS): The cornerstone of system software, comprising:
User interface
Memory managers
Input/Output (I/O) systems
Utilities
Language services
Information managers
Scheduler
Communications: The OS communicates user intent and triggers the necessary programs or applications.
Core Functions of Operating Systems
User Interface Management: Facilitates communication between user and system.
System Security and Protection: Controls access to resources through permissions.
Program Scheduling Activation: Manages program execution.
Efficient Resource Allocation: Ensures fair and optimal resource use.
Deadlock and Error Detection: Monitors for issues that may hinder operation.
Advantages of Assembly Language
Low-Level Language: Assembly language maps directly to machine code, offering clarity and maintainability.
Symbolic Operations: It uses symbolic op codes and addresses, making it more human-friendly than raw binary.
Helps understand the program structure.
Translation Process: Assembler translates assembly code into machine language object programs, followed by loading them into memory for execution.
Assembly Language Process
Assembler:
Converts high-level instructions into machine code.
Outputs an object file which is then loaded by a loader.
Example Assembly Instructions:
Labels (e.g., DEST, SOURCE): Descriptive for program readability.
Pseudo-ops: Directives that instruct the assembler (e.g., .DATA, .BEGIN).
Higher-Level Programming Languages
Examples: Java, C++, Python.
Advantages:
More powerful with single instructions potentially comprising multiple machine commands.
User oriented, uses natural and mathematical expressions instead of machine-specific syntax.
Evolution of Operating Systems
First Generation (1945-1955): Mainframe computing with manual program loading.
Second Generation (1955-1965): Introduction of batch processing, where multiple programs were executed in batches.
Third Generation (1965-1985): Multiprogramming where multiple programs coexist, leading to the need for security measures.
Fourth Generation (1985-Present): Introduction of network operating systems facilitating broader connectivity and multimedia interfaces.
Fifth Generation: Theoretical future with enhanced multimedia and distributed computing capabilities.
Key Takeaways
System software abstracts complexity, allowing users to interact with computers more intuitively.
Assembly language provides a bridge between the human-readable code and machine language, promoting better program management and execution.
The evolution of operating systems reflects ongoing improvements in usability, security, and resource management, shaping the future of computing technologies.