Software

# Topic covered
* Systems software
* Application software
* Operating System(OS)
* Types of OS
* Multithreading vs Multitasking 

Software is a set of programs (sequence of instructions) that allows the users to perform a well-defined function or some specified task

# Types of software
* Systems software
* Application software

Systems software

  • System software is also known as low-level software
  • It is designed to manage system resources
  • It operates and controls the computer system and provides a platform to run application software
  • Types of System Software
    • Operating System
      • Windows, Linux, Mac Os…
    • Device Drivers
      • Drivers for Keyboard, Mouse, Printer …
    • Firmware Software
      • BIOS (Basic Input/Output System) chip.
      • UEFI (Unified Extended Firmware Interface) chips.
    • File management utilities, disk operating system (or DOS) etc..

Application software

  • Application software are end-user computer programs
  • Developed to performs specific task for the user
  • Example:
    • Database Software
      • Oracal, SQLite
    • Multimedia Software
    • Web Browsers etc..

Operating System(OS)

  • An OS is an system software that provides an interface between user and hardware
  • An OS is a piece of software that manages all the resources of a computer system,both hardware and software
  • And provides an environment in which the user can execute his/her programs in a convenient and efficient manner by hiding underlying complexity of the hardware and acting as a resource manager.

Function of OS

  • Resource Allocation
  • Resource Management
    • Memory, Process, Files management
    • I/O Device, CPU management etc…
  • Details
    • Access to the computer hardware.
    • Interface between the user and the computer hardware
    • Abstraction: Hides underlying complexity of the hardware
    • Programs isolation and protection.

What if there is no OS?

  • Bulky and complex app. (Hardware interaction code must be in app’s code base)
  • Resource exploitation by 1 App.
  • No memory protection.

OS goals

  • For End Users
    • Primary: Convienience
    • Secondary: Efficiency
  • Efficiency
    • Maximum CPU utilization
    • Less process starvation
    • Higher priority job execution

Types of OS

  • Single process OS [MS DOS, 1981]

Batch-processing OS [ATLAS, late 1950s – early 1960s]

  • A set of similar jobs are made as batch and are stored in the main memory for execution.
  • A job gets assigned to the CPU, only when the execution of the previous job completes.
  • In I/O operation: CPU remails idle

Multi-programming OS [THE, early 1960s]

  • Multiprogramming increases CPU utilization by keeping multiple jobs in the memory
  • So that the CPU always has one to execute in case some job gets busy with I/O
  • Multi programming works on the concept of context switching
  • Single CPU
  • Context switching
  • Pros
    • CPU idle time reduced
  • Cons
    • Process starvation
      • If current job is too long, as switch happens when current process goes to wait state.

Multi-tasking OS [CTSS, early 1960s]

  • Multitasking is a logical extension of multiprogramming
  • Multiprogramming + Premption = Multitasking
  • Premption is based on time sharing alongside the concept of context switching
  • Single CPU
  • Context switching and time sharing used
  • Pros
    • Process starvation is low
    • Increases responsiveness.

Multi-processing OS [Windows]

  • Multi-processing OS used more than 1 CPU in a single computer
  • Multiple CPU
  • Parallel processing

Distributed OS

  • OS manages many bunches of resources, >=1 CPUs, >=1 memory, >=1 GPUs, etc
  • Loosely connected autonomous, interconnected computer nodes.
  • collection of independent, networked, communicating, and physically separate computational nodes.

Real time OS

  • Real time error free, computations within tight-time boundaries
  • Air Traffic control system, ROBOTS etc

Multithreading vs Multitasking

Program

  • A Program is an executable file which contains a certain set of instructions written to complete the specific job or operation on your computer

Process

  • Program under execution. Resides in Computer’s primary memory (RAM)

Thread

  • A process’s tasks can be divided into independent path of execution called thread
  • A thread shares resources with other threads of the same process: the code section, the data section, files and signals.
  • E.g.
    • Multiple tabs in a browser,
    • Text editor (When you are typing in an editor, spell-checking, formatting of text and saving the text are done concurrently by multiple threads.)

Multi-threading

  • Multithreading is a system in which many threads are created from a process through which the computer power is increased.
  • Used to achieve parallelism there thread are executed parallely
  • If CPU == 1
    • Parallelism will fail(No benifits)
  • If CPU > 1
    • Parallelism is possible

Difference

  • Multi-tasking
    • Concept of more than 1 processes being context switched
    • Separate resources allocated to each process
  • Multi-threading
    • Concept of more than 1 thread. Threads are context switched
    • Resources are shared among threads

Reference