System Software, Application Software and Operating System Fundamentals

Distinctions Between System and Application Software

  • Definition of Software: Generally consists of sequences of instructions, known as programs, designed to solve a specific problem.

  • System Software:

    • Defined as a collection of computer programs that manage the resources of a computer and facilitates access to those resources.

    • It serves as a technical foundation for other software to operate.

  • Application Software:

    • Defined as software that allows a user to address a specialized task of interest to that specific user.

    • Examples include writing a document, creating an image, browsing the web, or solving a system of equations.

The Role and Characteristics of System Software

  • Intermediary Role: System software acts as an intermediary layer between the physical hardware and the human user. It enables users to access and use the computer's resources easily.

  • Virtual Machine Interface:

    • The system software presents a set of services and resources to the user across a "virtual machine interface."

    • While the hardware is the "actual machine interface," the system software simulates resources to give the user the illusion that they exist in a simplified form.

  • Information Hiding: A primary characteristic of system software is that it hides complex and unimportant details of the internal Von Neumann architecture from the user.

  • Ease of Understanding: It presents important information in an easy-to-understand format and allows for simple, efficient access to machine resources.

  • Safety and Security: It provides a secure environment for operation.

  • Example of Information Hiding (The Addition Operation):

    • In high-level programming, a user might write: a=b+ca = b + c.

    • At the machine language level, this involves four steps: (1) loading ALU registers from memory cells bb and cc; (2) activating the ALU; (3) selecting the output of the addition circuit; (4) sending the result to memory cell aa.

    • The system software ensures the programmer does not need to know about registers, addition circuits, or specific memory addresses.

  • Automated Loading: After a program is written, system software automatically loads it into memory without the programmer needing to specify a physical location. The user can simply issue a command, click a mouse, or tap a finger to "Run this application."

Types of System Software and the Operating System (OS)

  • Overview: System software is not one program but a collection of many different programs.

  • The Operating System (OS):

    • The single most important piece of system software.

    • It controls the overall operation of the computer and communicates with users to determine their requests, activating other system programs or applications to fulfill them.

  • Key Software Packages within the OS:

    • User Interface: Modern operating systems provide a Graphical User Interface (GUI) for intuitive visual control. Control is executed via keystrokes, mouse clicks, finger taps, voice activation, or biometric scans (Fingerprints).

    • Language Services: Includes assemblers, compilers, and interpreters that allow users to write programs in high-level, user-oriented languages rather than machine code. These often include text editors and debuggers.

    • Memory Manager: Responsible for allocating memory space for programs/data and retrieving that space when it is no longer needed.

    • Information Managers: Handle organization, storage, and retrieval of information on local devices (hard drives, DVDs, flash drives, tapes) or remote locations (cloud storage in data centers). They allow hierarchical organization using directories (folders) and files.

    • I/O Systems: Software packages that allow for the easy and efficient use of various input and output devices.

    • Scheduler: Maintains a list of programs ready to run on the processor and selects the next one to execute. This allows for multitasking (e.g., surfing the web while waiting for a file to print).

    • Utilities: A collection of library routines providing useful services to users or other system routines, such as text editors, online help, image/sound apps, and control panels.

Writing and Running a Program on a Modern OS

  • The Virtual Machine Advantage: Performing tasks on a "naked machine" (hardware without system software) is difficult and tedious. System software simplifies problem-solving.

  • Step-by-Step Procedure:

    1. Use a text editor to create a program PP in high-level, English-like notation.

    2. Use an information manager to store program PP in a specific directory.

    3. Use a language translator to convert program PP into an equivalent machine language program MM.

    4. Use a scheduler to load and run program MM. The scheduler coordinates with the memory manager to find space.

    5. Use the I/O system to display output on the screen.

    6. If errors occur, use a debugger to locate them, then the text editor to correct them, and the information manager to save the update.

Classification and Types of Application Software

  • General Features: Applications (or "apps") carry out tasks unrelated to the computer's own operation. They can be bundled with the OS or published separately as proprietary, open-source, or custom projects.

  • Classification by Rights and Coding:

    • Property Rights: Closed-source vs. open-source; Free vs. proprietary.

    • Coding Language: Web applications (HTML, JavaScript) vs. Native applications (C, C++C++, Java, Python, Ruby, etc.).

  • Classification by Purpose and Platform:

    • Purpose: Horizontal applications (General purpose like word processors or databases) vs. Vertical applications (Niche products for specific industries like banking, manufacturing, or accounting).

    • Platform: Desktop applications, Cloud/Web 2.0 applications, or Mobile apps.

  • Functional Categories:

    • Information Worker: Accounting, data management, enterprise resource planning (ERP), project management, reservation systems.

    • Entertainment: Screen savers, video games, software art.

    • Educational: Classroom management, reference software, sales readiness, encyclopedia software.

    • Enterprise Infrastructure: Artificial Intelligence for IT Operations (AIOps), Business workflow software, Database Management Systems (DBMS), Digital Asset Management (DAM), Document Management software, Geographic Information Systems (GIS).

Core Functions of the Operating System

  • The User Interface as Receptionist/Dispatcher: The OS waits for a command and, if legal, activates the appropriate software. Commands usually request hardware resources (camera, processor), software services (browser), or information (data files).

  • Evolution of Interfaces:

    • Text-Oriented (1950s–1970s): Required learning complex command languages (e.g., ls -al /usr/mike/home). This was a major hurdle for new users.

    • Modern GUI: Uses visual aids, point-and-click, touchscreens, and voice activation. These hide hardware complexity, creating the high-level virtual machine experience.

  • System Security and Protection:

    • Access Control: Requires a legal username and password. The OS prevents unauthorized users from accessing the system and prevents authorized users from performing unauthorized actions.

    • Password Management: The OS creates and protects the password file. Access to this file is restricted to "superusers."

    • Cryptography: To prevent cracking, the OS may use cryptographic hash algorithms, such as SHA256SHA256, to secure sensitive information.

Efficient Management of Resources and Scheduling

  • Processor Efficiency: The OS ensures the processor does not sit idle. It manages a queue of programs ready to run.

  • Program States:

    • Running: Currently being executed by the processor.

    • Ready: Loaded in memory and waiting for a turn to execute.

    • Waiting: Unable to run because it is waiting for an event or I/O operation (e.g., a disk read or a phone call) to complete.

  • Scheduling Example and Shuffling:

    • If program AA (Running) performs a disk I/O operation taking 10ms(microseconds)10\,ms\,(\text{microseconds}), the processor would be idle.

    • The OS moves AA to the Waiting list, selects program BB from the Ready list, and moves BB to Running.

    • Once AA's I/O finishes, it is moved back to the Ready list to wait for its next turn.

    • This cycle ensures that as long as one program is ready, the processor is performing useful work.

  • Priority Exceptions: Some tasks, such as answering a phone call on a smartphone, may be started immediately ahead of others in the queue.

The Safe Use of Resources and Deadlock Prevention

  • Resource Safety: The OS prevents the system from entering a "frozen" state where no work can be done.

  • Deadlock Definition: A condition where a set of programs are each waiting for an event that can only be caused by another waiting program in that same set.

  • The Resource Scenario:

    • Program AA gets File DD and then requests a Printer.

    • Program BB gets the Printer and then requests File DD.

    • Each program holds a resource the other needs and refuses to proceed, resulting in a permanent waiting state.

  • Deadlock Prevention Algorithm: If a program cannot obtain all the resources it needs to solve a problem, it must relinquish (give up) all resources it currently owns and issue a completely new request.

    • Resolution: By Program AA giving up File DD when it cannot get the printer, Program BB can then acquire both the printer and the file to finish its execution, thus breaking the deadlock.