Invitation to Computer Science 5th Edition Chapter 6 An Introduction to System Software and Virtual Machines Objectives In this chapter, you will learn about: • System software • Assemblers and assembly language • Operating systems Introduction • Naked machine – Hardware bereft of any helpful user- oriented features – Data as well as instructions must be represented in binary • To make a Von Neumann computer usable: – Create an interface between the user and the hardware

System Software • The virtual machine – System software: collection of computer programs that manage the resources of a computer and facilitate access to those resources – Software: sequences of instructions that solve a problem

Types of System Software • Operating system – Communicates with users – Determines what they want – Activates other system programs, applications packages, or user programs to carry out their request Types of System Software (continued) • User interface – Provides user with an intuitive visual overview • Language services (assemblers, compilers, and interpreters) – Allow you to write programs in a high level • Memory managers – Allocate memory space for programs and data • Information managers – Handle the organization, storage, and retrieval of information on mass storage devices

Types of System Software (continued) • I/O systems – Allow you to easily and efficiently use the input and output devices that exist on a computer system • Scheduler – Keeps a list of programs ready to run on the processor and selects the one that will execute next • Utilities – Library routines that provide useful services either to a user or to other system routines Assemblers and Assembly Language • Problems with machine language – Uses binary – Is difficult to change – Is difficult to create data

Assembly Language • Assembly language – Low-level programming language – Each symbolic assembly language instruction is translated into exactly one binary machine language instruction • High-level programming languages – User oriented – Not machine specific – Use both natural language and mathematical notation in their design

Assembly Language (continued) • Source program – Program written in assembly language • Object program – Source program must be translated into a corresponding machine language program • Assembler – System software that carries out translation • Advantage of assembly language – Allows use of symbolic addresses

Assembly Language (continued) • Advantages of symbolic labels – Program clarity – Maintainability • Pseudo-op – Invokes the service of the assembler – Provides program construction Examples of Assembly Language Code • Conditional operation – Tests and compares values • Algorithmic problem-solving cycle – One of the central themes of computer science

Translation and Loading • Assembler – Translates a symbolic assembly language program into machine language – Tasks performed • Convert symbolic op codes to binary • Convert symbolic addresses to binary • Perform the assembler services requested by the pseudo-ops • Put the translated instructions into a file for future use Translation and Loading (continued) • Op code table – Alphabetized list of all legal assembly language op codes and their binary equivalents • In assembly language: – A symbol is defined when it appears in the label field of an instruction or data pseudo-op • Pass – Process of examining and processing every assembly language instruction in the program, one instruction at a time

Translation and Loading (continued) • First pass over source code – Assembler looks at every instruction • Binding – Process of associating a symbolic name with a physical memory address • Primary purposes of the first pass of an assembler – To bind all symbolic names to address values – To enter those bindings into the symbol table Translation and Loading (continued) • Location counter – Variable used to determine the address of a given instruction • Second pass – Assembler translates source program into machine language • After completion of pass 1 and pass 2 – Object file contains the translated machine language object program

Operating Systems • Operating system – Waits for requests and activates other system programs to service these requests • System commands – Used to translate, load, and run programs

Functions of an Operating System • The user interface – Operating system commands usually request access to hardware resources, software services, or information – To communicate with a user, a GUI supports visual aids and point-and- click operations

System Security and Protection • Operating system – Controls access to the computer and its resources – Safeguards password file – Sometimes uses encryption to provide security • Access control – Use of a legal user name and password Efficient Allocation of Resources • I/O controller – Frees the processor to do useful work while the I/O operation is being completed • To ensure that a processor does not sit idle if there is useful work to do: – Operating system keeps a queue of programs that are ready to run The Safe Use of Resources • Operating system – Prevents programs or users from attempting operations that cause the computer system to enter a “frozen” state • Deadlock – Each program is waiting for a resource to become available that will never become free

The Safe Use of Resources (continued) • Deadlock prevention – Operating system uses resource allocation algorithms that prevent deadlock from occurring in the first place • Deadlock recovery algorithms – Detect and recover from deadlocks Summary of OS Responsibilities • Major responsibilities of operating systems – User interface management (a receptionist) – Control of access to system and files (a security guard) – Program scheduling and activation (a dispatcher) – Efficient resource allocation (an efficiency expert) – Deadlock detection and error detection (a traffic officer)

Historical Overview of Operating Systems Development • First-generation system software – Roughly 1945–1955 – No operating systems and very little software support • Second-generation system software – Called batch operating systems (1955–1965) • Command language – Commands specifying to the operating system what operations to perform on programs

Historical Overview of Operating Systems Development (continued) • Third-generation operating systems – Multiprogrammed operating systems (1965–1985) – Many user programs are simultaneously loaded into memory – User operation codes: could be included in any user program – Privileged operation codes: use restricted to the operating system or other system software Historical Overview of Operating Systems Development (continued) • Time-sharing system – Many programs can be stored in memory – Allows programmer to enter system commands, programs, and data online • Distributed environment – Much of the computing was done remotely in the office, laboratory, classroom, and factory • Network operating system – Fourth-generation operating system (1985–present)

Historical Overview of Operating Systems Development (continued) • Real-time operating system – Manages resources of embedded computers that are controlling ongoing physical processes – Guarantees that it can service important requests within a fixed amount of time

The Future • Multimedia user interfaces – Will interact with users and solicit requests in a variety of ways • Parallel processing operating system – Can efficiently manage computer systems containing tens, hundreds, or even thousands of processors • Distributed computing environment – Users do not need to know the location of a given resource within the network

Summary • System software – Acts as an intermediary between the users and the hardware • Assembly language – Creates a more productive, user- oriented environment than machine language • An assembler – Translates an assembly language program into a machine language program