Software and Software Development

Cards (43)

  • operating system refers to a collection of programs that work together to provide an interface between the user and computer. Operating systems enable the user to communicate with the computer and perform certain low-level tasks involving the management of computer memory and resources.
  • Operating systems (OS) provide the follwoing:

    Memory management (paging, segmentation, virtual memory)
    Resource management (scheduling)
    File management (moving, editing, deleting files and folders)
    Input/ Output management (device drivers)
    Interrupt management
    Utility software (disk defragmenter, backup, formatting etc.)
    Security (firewall) - User interface
  • Computer memory must be shared fairly between multiple programs and applications. Main memory is not large enough to store all of the programs being used. One of the roles of the OS is to determine and allocate the length of processor time each task receives through the use of paging, segmentation and virtual memory.
  • Paging is when memory is split up into equal-sized sections known as pages, with programs being made up of a certain number of equally-sized pages. These can then be swapped between main memory and the hard disk as needed.
  • Segmentation is the splitting up of memory into logical sized divisions, known as segments, which vary in size. Representative of the structure and logical flow of the program, with segments being allocated to blocks of code such as conditional statements or loops.
  • Virtual memory uses a section of the hard drive to act as RAM when the space in main memory is insufficient to store programs being used. Sections of programs that are not currently in use are temporarily moved into virtual memory through paging, freeing up memory for other programs in RAM.
  • issue with using these 3 techniques is disk thrashing. the computer freezes because of pages being swapped too frequently between the hard disk and main memory. so more time is spent transferring these pages between main memory and the hard disk then is spent actually running the program. This issue becomes progressively worse as virtual memory is filled up.
  • Interrupts are signals generated by software or hardware to indicate to the processor that a process needs attention. Different types of interrupts have different priorities and how urgent they are must be taken into account by the operating system when allocating processor time. stored in order of their priority within an abstract data structure called a priority queue in a special register known as an interrupt register. operating system to ensure interrupts are serviced fairly by the processor
  • processor checks the contents of the interrupt register at the end of each Fetch-Decode-Execute cycle. If an interrupt exists that is of a higher priority to the process being executed. current contents of the special purpose registers in the CPU are temporarily transferred into a stack. responds to the interrupt by loading the appropriate interrupt service routine (ISR) into RAM. A flag is set to signal the ISR has begun.
  • operating system is to ensure all sections of programs being run (known as ‘jobs’) receive a fair amount of processing time. This is done by implementing various scheduling algorithms,
  • Pre-emptive:
    Jobs are actively made to start and stop by the operating system. eg. Multilevel Feedback Queues, Shortest Remaining Time, Round Robin
  • Non pre-emptive: Once a job is started, it is left alone until it is completed. eg. First Come First Served, Shortest Job First
  • Round robin:
    Each job is given a section of processor time - known as a time slice - within which it is allowed to execute. Once each job in the queue has used its first time slice, the operating system again grants each job an equal slice of processor time. This continues until a job has been completed.
  • Round Robin: longer jobs will take a much longer time for completion due to their execution being inefficiently split up into multiple cycles. This algorithm also does not take into account job priority
  • Multilevel feedback queues : This makes use of multiple queues, each which is ordered based on a different priority. This can be difficult to implement due to deciding which job to prioritise based on a combination of priorities
  • Shortest remaining time: The queue storing jobs to be processed is ordered according to the time eft for completion, with the jobs with the least time to completion being serviced first. Again, there is a risk of processor starvation for longer jobs if short jobs are added to the job queue
  • Distributed OS: This is a type of operating system which is run across multiple devices, allowing the load to be spread across multiple computer processors when a task is run.
  • Embedded Built OS: to perform a small range of specific tasks, this operating system is catered towards a specific device. They are limited in their functionality and hard to update although they consume significantly less power
  • Multi-tasking operating systems enable the user to carry out tasks seemingly simultaneously. This is done by using time slicing to switch quickly between programs and applications in memory.
  • Multiple users make use of one computer, typically a supercomputer, within a multi-user system. Therefore a scheduling algorithm must be used to ensure processor time is shared fairly between jobs
  • Real Time OS Commonly used in time-critical computer systems, a real time OS is designed to perform a task within a guaranteed time frame
  • The Basic Input Output System is the first program that runs when a computer system is switched on. The Program Counter register points to the location of the BIOS upon each start-up of the computer
  • BIOS is responsible for running various key tests before the operating system is loaded into memory, such as:
    • POST (Power-on self test) which ensures that all hardware (keyboards, disk drives) are correctly connected and functional
    • Checking the CPU clock, memory and processor is operational
    • Testing for external memory devices connected to the computer
  • The BIOS is critical to the computer system as it is only after these checks are completed that the operating system can be loaded into RAM from the hard disk
  • Device drivers are computer programs which are provided by the operating system and allow the operating system to interact with hardware. hardware is used, device driver that communicates this request to the operating system which can then produce the relevant output
  • Device drivers are specific to the computer’s architecture, so different drivers must be used for different device types. As drivers interact with the operating system, they are also specific to the operating system installed on the device
  • A virtual machine is a theoretical computer in that it is a software implementation of a computer system. It provides an environment with a translator for intermediate code to run.
  • Intermediate Code: Code that is halfway between machine code and object code.
  • Virtual machines are commonly used to create a development environment for programmers to test programs on different operating systems. The advantage of this is that it saves both the time and money of having to purchase multiple devices solely for testing. However, running intermediate code in a virtual machine can also be considerably slower compared to running low-level code on the device it was designed for.
  • Applications software is designed to be used by the end-user to perform one specific task. Application software requires systems software in order to run.
  • Systems software is low-level software that is responsible for running the computer system smoothly, interacting with hardware and generally providing a platform for applications software to run. The user does not directly interact with systems software but it ensures high performance for the user
  • Utilities are a key piece of system software integral to ensuring the consistent, high performance of the operating system. Each utility program has a specific function linked to the maintenance of the operating system
  • Open source code can be used by anyone without a license and is distributed with the source code
  • Closed source code requires the user to hold an appropriate license to use it. Users cannot access the source code as the company owns the copyright license.
  • Advantages of open source softwares
    • Can be modified and improved by anyone
    • Technical support from online community
    • Can be modified and sold on
  • Advantages of closed source software:
    • Thorough, regular and well-tested updates
    • Company owning software provides expert support and user manuals.
    • High levels of security as developed professionally.
  • Disadvantages of open source software:
    • Support available online may be insufficient or incorrect. No user manuals
    • Lower security as may not be developed in a controlled environment
  • Disadvantages of closes sorce softwares:
    • License restricts how many people can use the software at once
    • Users cannot modify and improve software themselves
  • A translator is a program that converts high-level source code into low-level object code, which is then ready to be executed by a computer. There are three types of translator that convert different types of code
  • Compilers translate high-level code into machine code all at once. This initial compilation process is longer than using an interpreter or an assembler. changes need to be made, the whole program must be recompiled. compiled code is specific to a particular processor type and operating system. Code can be run without a translator being present