Chapter 6: An Introduction to System Software and Virtual Machines
grace hopper
-debunked the common belief that was computers could only do arithmetic -created the first operational compiler in 1952 -believed that programs should be written in a language that was close to english rather than in machine code or assembly language -popularized the idea of machine-independent programming languages -created COBOL
assembly language (OAM)
-low-level programming language -each symbolic assembly language instruction is translated into exactly *one* binary machine language instruction -better than machine language -machine specific (tied to OAM architecture) -design decisions: --op codes --include/exclude specific functions
multi-user operating system
-many users can use a computer's resources simultaneously -must balance the requirements of the users -a problem with one user doesn't affect other users -unix, mainframe operating systems
higher-level languages
-more abstract than assembly language -user oriented -not machine specific (portable) -use both natural language and mathematical notation in their design these programs get translated into the appropriate machine instructions
single-user, single task operating system
-one user can effectively do one thing at a time -example: palm OS for Pal handheld computers
typical operation: turn on computer
-power on self test (POST) --checks the CPU, memory, basic input output systems (BIOS) for errors
binding
-processing of associating a symbolic name with a physical memory address -OAM: --symbolic name (label) --memory address (line number)
basic tasks of an operating system
-processor mgmt -memory mgmt -device mgmt -storage mgmt -application interface -user interface
operating systems can be modified without having to scrap the device
-security update -system patch
primary purpose of the first pass of an assembler
-to bind all symbolic names to address values -to enter those bindings into the symbol table
single user, multi-tasking operating system
-typical operating system on desktop and laptop computers -microsoft's windows and apple's MacOS platforms -single user has several programs in operation at the same time
real-time operating system (RTOS)
-used to control machinery, scientific instruments, industrial systems -very little user interface capability -no-end user utilities
problems with machine language
-uses binary -is difficult to read -is difficult to change -is difficult to create data
location counter
-variable used to determine the address of a given instruction
in assembly language:
a symbol is defined when it appears in the label field of an instruction of data pseudo-op
memory managers
allocate memory space for programs and data
i/o systems
allow you to easily and efficiently use the input and output devices that exist on a computer system
language services (assemblers, compilers, and interpretert)
allow you to write programs in a high level
advantage of assembly language
allows use of symbolic addresses
op code table
alphabetized list of all legal assembly language op codes and their binary equivalents
first pass over source code
assembler looks at every instruction
second pass
assembler translates source program into machine language
deadlock
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
information managers
hand the organization, storage and retrieval of information on mass storage devices
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
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
summary of OS responsibilities
major responsibilities of operating systems -user interface mgmt (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)
after completion of pass 1 and pass 2
object file contains the translated machine language object program
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 user interface language services memory managers imformation managers i/o systems scheduler utilities
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 username and password
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
pass
process of examining and processing every assembly language instruction in the program, one instruction at a time
source program
program written in assembly language
user interface
provides user with an intuitive visual overview
activate hard disk drive
runs the first piece of the operating system: the bootstrap loader -small program that loads the operating system into memory and allows it to begin operation/sets up driver programs that interface with and control hardware subsystems
object program
source program must be translated into a sorresponding maching language program
assember
system software that carries out translation
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
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
system commands
used to translate, load and run programs
operating system
waits for requests and activates other system programs to service these requests
well known operating systems
windows, macintosh, unix