Visual Representations of Executing Programs - Brown Computer
1 Chapter 6: System Software and Virtual Machines Chapter 4 and 5 investigated the hardware behind a...
-
date post
20-Dec-2015 -
Category
Documents
-
view
215 -
download
1
Transcript of 1 Chapter 6: System Software and Virtual Machines Chapter 4 and 5 investigated the hardware behind a...
1
Chapter 6: System Software and Virtual Machines
Chapter 4 and 5 investigated the hardware behind a Von-Neumann computer
A computer is capable of executing programs written in machine language (binary data and instructions)
Should human users also use the control unit language in order to manipulate programs and data?
The “naked” machine described in the last chapters is hard to interact with, human users need further support (e.g. tools) in order to make computers more effective and more useful.
2
Features of the Naked Machine
It uses binary representation of data and instructions It only performs the fetch/execute cycle of instructions
automatically, but nothing else. It is designed with the goal of simplifying the hardware
task in mind, people using the machine were not taken into consideration
Suppose you want to use the naked machine directly: 1. Step:
You have to provide your program and data in binary very time-consuming very error-prone Example: 10 00001010 ADD 00000111
2. Step:You have to store the program in memory You have to go to each memory cell and set its values
to the corresponding instructions Have fun!!!
3
Features of the Naked Machine
3. Step:You have to start the program Put the beginning address of your program into the
program counter (PC) Now the processor can do everything automatically
You might be asking yourself, have programmers and users of computers to be also electrical engineers?
What the naked machine needs in order to be useful is a User Interface that
hides unnecessary details allows access to the resources of the computers prevents accidental or intentional damages of hardware,
programs, and data.
4
Outline of this chapter System Software
Virtual Machine Types of System Software
Assemblers and Assembly Language
Assembly Language Translation and Loading
Operating Systems (OSs) Tasks of the operating system History of operating systems
Algorithmic Foundations
Hardware
Virtual Machine
Software
Applications
Social Issues
5
System Software Software means any program or set of programs Remember: Hardware is the machine itself or any part
thereof The system software is a collection of computer programs
that manage the resources of the computer and facilitate access to those resources.
Resources: Any usable part of hardware or software System software acts as an intermediary between users and
hardware
System Software Hardware
Machine Interface (MI)
VirtualMachine Interface (VMI) Virtual Machine
6
Virtual Machine Compare: System software Dashboard of an automobile The system software has the following tasks:
Hide the details of the Von-Neumann architecture from the user Present information in an easy to understand form Allow for accessing resources in a simple and efficient form Ensure security and safety of the environment
Examples: a = b+c: should not need any further specification to be executed.
abstract from registers, fetch, and store and so on. Loading a program should be automatic, the VMI should offer a
command like “load my program into memory” VMI should make it possible to move data from/to I/O devices
without dealing with details such sector and track addresses in a disk
7
Types of System Software System software includes different types of programs:
Operating System (OS)
Language Translatorse.g.-Assemblers-Compilers
Memory Managerse.g.- Loaders- Linkers
Information Managerse.g.-File systems-Databases
Utilitiese.g.-Text Editors- Draw Programs
Hardware
System Software
8
Types of System Software OS: a program that controls the overall operation of the
computer and manages its resources. It communicates with a user and lets him/her activate the
different software packages to handle a specific request. Some of these packages are:
Language translators: Assemblers and compilers are programs that allow for writing programs in a user-oriented way (not in binary)
Memory managers: Programs that allocate memory space for programs and data and load programs into memory
File systems: Programs that allow for storage and retrieval of data kept in mass storage (e.g. CD-Roms, Disks)
Utilities: what you otherwise often use like editors, draw programs, debugging programs
9
Using the System Software for Program Development and Execution
Step 1: Use a text editor to create a program in a high-level (English-like) language
Step 2: Use the file system to store the program into hard disk
Step 3:Use a language translator to get the program in binary
Step 4: Use a loader in order to assign memory to your program
Step 5: Use the operating system to start the program
Step 6: Use the file system to store results of your program
Step 7: Potentially (in case of errors) use a debugger to find the error(s) in your program
10
Assemblers and Assembly Language
Machine language drawbacks are: Use of binary No names are allowed for addresses (only numbers) Difficult to change
Assembly language is a the first step towards more user-friendly interface for computers (programming).
Appeared in 1950s (2nd Generation of computers) Philosophy behind it: make it easy for both machines
and users at the same time Today assembly languages are viewed as low-level
languages, since each instruction of the assembly language is translated into a single instruction of the machine language
11
Assembly Language In contrast: Basic, Fortran, Cobol, Pascal, and C are
considered high-level languages (HLLs). HLLs are more user-oriented than Assembly languages, a
typical HLL instruction is translated to many machine language instructions
Evolution of programming languages:
Machine languages
Assembly Language
HLLsIncreasing level of abstraction
12
Assembly Language Process of translation, loading, and execution
AssemblyLanguageProgram
Assembler
Loader
MachineLanguageProgram (loaded)
MachineLanguageProgram
Hardware
Source Program
Results
13
Assembly Language Example of an assembly language:
Instruction format:label: op code mnemonic address field
-- comment Labels: names that identify instructions or data, e.g.
BEGIN: ADD A, B…
JUMP BEGIN More clarity Better Maintainability
Op-code mnemonic: No more binary numbers are used, your assembly program includes the word “ADD” (for +), “SUB” (for -) and so on.
Address field: Names of operands and not their addresses Comment: Any remarks connected to the instruction, not
processed by the assembler
14
Assembly Language Examples of assembly instructions:
LOAD X -- value of X is copied to a register R (XR)STORE X -- RXCLEAR X -- 0XADD X -- R+XRINCREMENT X -- X+1XDECREMENT X -- X-1XSUBSTRUCT X -- R-XRCOMPARE X -- Set GT (if X>0), EG (if X=0), or LT (if X <0)JUMP X -- XPCJUMPGT X -- if GT=true then XPCJUMPLT X -- if LT=true then XPCJUMPEQ X -- if EQ=true then XPCIN X -- (integer value from keyboard)XOUT X -- X(New line on the screen)HALT -- stop program execution
15
Assembly Language Also assemblers allow pseudo-instruction for e.g. data generation
Example: FIVE: .DATA +5 -- generates the binary value of 5 and
-- puts it in a memory cell called FIVE
Suppose: Assembler chooses address 53 for FIVE53: 000000101Now: LOAD FIVE is equivalent to LOAD 53 LOAD 5 in contrast would mean to load the address 5
which may holds another value than “5” Other pseudo-instructions are for example .BEGIN and .END:
.BEGIN… -- here any instruction ADD, JUMP, and so onHALT… -- here .DATA instructions
.END
16
Examples for Pseudo-Code to Assembly Translations
A piece of the Sequential Search Algorithm:Set I to 1…Add 1 to ITranslated into assembly language:
.BEGINLOAD ONE -- 1RSTORE I -- RI (I is now = 1) …INCREMENT I -- Add 1 to I…HALT
I: .DATA 0ONE: .DATA 1
.END
17
Examples for Pseudo-Code to Assembly Translations
Another example using a While loop:1. Set I to 02. While I is not equal 10,000
…9. Add 1 to I10. End loop11. Stop
In assembly language:LOAD ZERO -- 0RSTORE I -- RI
LOOP: LOAD MAX -- 10,000RCOMPARE I -- compare I and 10,000JUMPEQ DONE -- if I=10,000 we are done…INCREMENT I -- Step 9 of aboveJUMP LOOP -- Repeat the loop
DONE: HALT -- stop executionZERO: .DATA 0I: .DATA 0MAX: .DATA 10000
18
Translation and Loading Tasks of an assembler:
Convert symbolic op-codes to binary Convert symbolic addresses to binary Perform assembler services needed by pseudo-operations
(like .DATA) Put the translated instructions in a file
Op-code conversion: Use of an op-code table An op-code table may look like the following
ADD 0011CLEAR 0010COMPARE 0111DECREMENT 0110
…
19
Translation and Loading Assembler reads the program line by line and looks for
corresponding binary value of each instruction in op-code table
What search algorithm? Sequential search: O(n) Better: organize the op-code table in a sorted way, then
binary search can be used O(log(n)) More difficult is converting symbolic addresses and
labels into binary, because these differ from a program to another one
Normally, assembler goes through the code 2 times 2 passes are needed
20
Translation and Loading First pass:
Task: build so-called symbol table, which binds each symbol to the appropriate address.
Example:Code Location counter
Symbol table LOOP: IN X 0 LOOP 0
IN Y 1 DONE 7LOAD X 2 X 9COMPARE Y 3 Y
10JUMGT DONE 4OUT X 5JUMP LOOP 6
DONE: OUT Y 7HALT 8
X: .DATA 0 9Y: .DATA 0 10
21
Translation and Loading Second pass:
Use of the op-code table for translating mnemonic op-codes Use of the symbol table for translating symbolic addresses to binary Example:
SUBSTRACT Xinvolves the following steps:1. Look up SUBSTRUCT in op-code table
e.g. 01012. Look up the symbol X in the symbol table
e.g. 0000 1001 (9)3. Get the whole instruction in binary:
0101 0000 1001 Other instructions are handled in the same way, except data generation ones
where a conversion from decimal to sign-magnitude binary is also made. The generated code is put into a (new) file called object file
22
Loader The object file is handed out to the loader The loader’s task is to assign memory to
instructions and data of the program When loading is complete, the loader places
the address of the first instruction into the PC (Program Counter)
The hardware begins then processing the program instruction by instruction
23
Operating System To carry out the services described, the user must issue
system commands e.g.: > assemble MyProgram (which invokes the assembler) > run MyProgram (which invokes the loader)
Often the point-and-click technique via a mouse is used
The program that waits for such user commands and invokes on his/her behalf the desired services (like assembler and loader) is called operating system (OS)
The word “system” is used, because this program is often a huge one including many components.
24
Main Tasks of the OS The main tasks of the OS are:
User Interface Security and protection Efficient allocation of resources Safe use of resources
User Interface (UI):
The OS runs whenever no user programs are occupying the processor
It gets commands from users and runs the appropriate package to process the request
OS acts like a computer receptionist and dispatcher
25
User Interface Examples of commands:
Log on and off the computer Translate program Run program Save a file Print a file Read data from mass storage (e.g. disk, CD-Rom)
Types of UI: Text-based:
Example: list files in the current directory: dir thisDirectory (DOS) ls thisDirectory (Unix)
requires to learn the command language Graphical user interface:
Icons, pull-down menus, scrolling windows requires less expertise
26
Security and Protection Authentication of users
Only users that are allowed to use the computer are accepted
Other users are rejected Mechanism is based on passwords:
The first interaction with the OS includes providing a user name and password
Passwords are stored in a password file Password file is protected against malicious modifications Only a special user, the super user, is allowed to modify the
password file Super user is often the administrator of the computer OS may use encryption in order to safeguard the contents of the
password file E.g. ABC 01000001 01000010 01000011 (ASCII)
010100001001000011011111 (encrypted)(here left-shift 6 positions circularly
and add 15)
27
Security and Protection Authorization
Authenticated users must not do everything E.g. password file should not be accessible to them or at least
they should at most be able to read - not modify - it Principle: use of access rights Example: Authorization list for file GRADES
Adam RA R: Read onlySuzanne R A: AppendBob RAC C: ChangeAdmin RACD D: Delete
Checks are also made when deleting a huge amount of data e.g. the whole hard disk. The OS first asks the user to confirm the operation, since when deleted, data are lost forever!
28
Efficient Allocation of Resources
Recall that I/O controllers were introduced in order to avoid idle phases of the processor
However, this assumes that there is always something to do for the processor
To ensure this last assumption and to keep the processor busy as long as possible the OS takes the appropriate measures
Example: OS classifies programs into 3 categories: waiting, ready-to-run,
and running Assume we there are 4 programs (A, B, C, and D) loaded and A
is running whereas the other programs are ready-to-run: Waiting = {} Ready = {B, C, D} Running = {A}
29
Efficient Allocation of Resources
Assume that A (during its execution) issued an I/O operation that reads a sector from the disk
A would now wait for several milliseconds for the data to come
At this time the OS intervenes: Waiting = {A} Ready = {C, D} Running = {B}
Now B is running, that is, the processor is not idle Later when the I/O operation is complete:
Waiting = {} Ready = {B, A, D} Running = {C}
30
Safe Use of Resources OS prevents programs and users from using operations that
lead to a “frozen” state, where the computer is incapable of doing any further work
Suppose we have 2 programs A and B:A: A1. Get tape drive B: B1. Get laser printer
A2. Get the laser printer B2. Get tape driveA3. Print file B3. Print file
If A1 and B1 are already executed, the two programs will wait forever!
A will wait for the laser printer occupied by B B will wait for the tape drive occupied by A Deadlock
Deadlock prevention: e.g. ask for all resources simultaneously Deadlock recovery: e.g. ask a program to undo the operation
31
History of OSs First Generation (1945-1955)
No system support, except assembler and loader One user at a time (users sign up for a block of time) Special buttons for starting assembler/loader Most of the time the machine was idle because the user was analyzing
results and thinking what to do next system administrators realized the need of keeping the costly machines
(millions of dollars!) busy as long as possible. Second Generation: Batch operating systems (1955-1965)
User was not the programmer (like above) but the highly trained computer operator
Operator collected set of programs (batch) –typically on punched cards – and carried them to a small I/O computer that put them on tape
The tape was then carried to the machine room in order to be executed by the “big” computer, where results were written into an output tape
The output tape was carried back to the I/O computer in order to print results of the various programmers
32
History of OSs Since programmers did not operate the machines, they needed to “tell” the
OS what is to be done job control language
Examples of commands: Assemble, Load, Run, etc. In the same period integrated circuit emerged, and the difference in speed
between processor and I/O became larger Just one program at a time was no longer beneficial
Third Generation: Multi programming operating systems (1965-1985) More than one program in memory Higher utilization of processor could be achieved (waiting cycles do not lead
to idle ones) Since different programs are allowed to work simultaneously, OS have to
protect each of them in memory A program is no longer allowed to use any memory address
Similarly, HALT instruction is no longer allowed to a program Privileged instructions (allowed to OS only) Due to the progress in computer networks, time-sharing systems (TSS)
evolved
33
History of OSs A TSS is also a multi-programmed one with the single difference that commands,
programs, and data are no longer supplied at the beginning (in the batch), instead the users can give these commands on-line from different terminals interactive environment
Users do not go to the “big” computer, they sit at their terminals and communicate data and commands
However, there was a minor change needed in TSS: computation-bound programs were taken into consideration
Observe that computation-intensive tasks were no problems in multiprogramming OSs because they highly utilized the processor without bothering users, but now (in a TSS) users were waiting for results after starting their programs
Therefore, in a TSS, a program may be suspended if either of the following happens:
The program initiates an I/O operation (like in multiprogramming OS) The program has run for a maximum length of time, called time slice e.g. 100
milliseconds (new) The number of users that can be served simultaneously depends on:
Speed of processor Length of time slice Type of operation being done by each users (e.g. I/O-intensive, computation intensive)
34
History of OSs Early 1980s: Appearance of personal computers (PCs) Initially, PCs were only viewed as another type of “dumb” terminals, however soon
thereafter (due to improvements in technology) people realized that much of the work of the central computer can be done by the desktop PC.
In late 1980s and in the 1990s computing changed from centralized environment (batch, multi-programmed, TSS) to a distributed environment, where computing moved to the front-end (e.g. office, lab, classroom).
OSs in PCs were initially single-user OSs (since they were -and still are- cheap, so no sharing of resources was needed)
However, I/O devices (e.g. laser printers, tapes) and special software packages (possibly in different locations) were not cheap, these needed to be shared: This led to the 4-th generation of OSs, where remote access to resources was supported.
Fourth Generation: Network operating systems (1985-present) A network operating system (NOS) is able to manage not only local resources but
also remote ones. Machines are connected via a network, e.g. a local area network (LAN). A LAN is used to connect machines within a building for example. Using a LAN,
users can access shared resources (called servers).
35
History of OSs Users at their workstations can perform local computing oblivious to the
network. OS performs in this case as described above. However, the OS lets the user access the remote resources, too, thereby
hiding the communication needed to access them. Examples of shared resources (NOS makes all of them appear like local
ones): Files servers: Manage large disks in the network. Print servers: E.g. one printer for a department. Compute server: A high-speed machine can be shared by many users Mail server: LAN supports communication with users connected to it. A
mail server gets every email; if it is for a local user, it forwards it to the user, if not, it forwards it to an outgoing link that connects the LAN to a wide-area network, a WAN, e.g. the internet.
Fifth Generation (??) Multimedia user interfaces, e.g. voice-based commands, tell the system your
commands Distributed OS (DOS): You don’t see the network, everything is hidden.