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

  1. User Interface Management: Facilitates communication between user and system.

  2. System Security and Protection: Controls access to resources through permissions.

  3. Program Scheduling Activation: Manages program execution.

  4. Efficient Resource Allocation: Ensures fair and optimal resource use.

  5. 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.