1 Chapter 6: System Software and Virtual Machines Chapter 4 and 5 investigated the hardware behind a...

35
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.
  • 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...

Page 1: 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.

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.

Page 2: 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.

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!!!

Page 3: 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.

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.

Page 4: 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.

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

Page 5: 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.

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

Page 6: 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.

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

Page 7: 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.

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

Page 8: 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.

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

Page 9: 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.

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

Page 10: 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.

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

Page 11: 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.

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

Page 12: 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.

12

Assembly Language Process of translation, loading, and execution

AssemblyLanguageProgram

Assembler

Loader

MachineLanguageProgram (loaded)

MachineLanguageProgram

Hardware

Source Program

Results

Page 13: 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.

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

Page 14: 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.

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

Page 15: 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.

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

Page 16: 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.

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

Page 17: 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.

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

Page 18: 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.

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

Page 19: 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.

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

Page 20: 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.

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

Page 21: 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.

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

Page 22: 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.

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

Page 23: 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.

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.

Page 24: 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.

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

Page 25: 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.

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

Page 26: 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.

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)

Page 27: 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.

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!

Page 28: 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.

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}

Page 29: 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.

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}

Page 30: 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.

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

Page 31: 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.

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

Page 32: 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.

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

Page 33: 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.

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)

Page 34: 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.

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).

Page 35: 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.

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.