ch3_new

reelingripehalfSoftware and s/w Development

Dec 14, 2013 (3 years and 7 months ago)

82 views


For slides, lectures and ebook you can
browse following link.



http://www.niit.edu.pk/~dr.raihan



Common System Components


Process Management


Main Memory Management


File Management


I/O System Management


Secondary Management


Networking


Protection System


Command
-
Interpreter System


System Components


Operating System Services


System Calls


System Programs


System Structure


Virtual Machines


System Design and Implementation


System Generation

Process Management


A process is a program in execution. A process
needs certain resources, including CPU time,
memory, files, and I/O devices, to accomplish its
task.


The operating system is responsible for the
following activities in connection with process
management.


Process creation and deletion.


process suspension and resumption.


Provision of mechanisms for
:


process synchronization


process communication


Process deadlocks

Main
-
Memory Management


Memory is a large array of words or bytes, each with its own
address. It is a repository of quickly accessible data shared
by the CPU and I/O devices.


Main memory is a volatile storage device. It loses its contents
in the case of system failure/shutdown.


The operating system is responsible for the following activities
in connections with memory management:


Keep track of which parts of memory are currently being used and by
whom (process).


Decide which processes to load when memory space becomes
available.


Allocate and deallocate memory space as needed.

File Management


A file is a collection of related information
defined by its creator. Commonly, files
represent programs (both source and object
forms) and data.


The operating system is responsible for the
following activities in connections with file
management:


File creation and deletion.


Directory creation and deletion.


Support of primitives for manipulating files and
directories.


Mapping files onto secondary storage.


File backup on stable (nonvolatile) storage media.

I/O System Management


OS purpose is to hide complexities of
specific hardware device from its user.


The I/O system consists of:


A buffer
-
caching system


A general device
-
driver interface


Drivers for specific hardware devices


Every OS need device driver for
installation of any specific hardware.

Secondary
-
Storage Management


Since main memory (
primary storage
) is volatile and too
small to accommodate all data and programs permanently,
the computer system must provide
secondary storage

to
back up main memory.


Most modern computer systems use disks as the principle
on
-
line storage medium, for both programs and data.


The operating system is responsible for the following
activities in connection with disk management:


Free space management


Storage allocation


Disk scheduling

Networking (Distributed Systems)


A
distributed

system is a collection processors that do
not share memory or a clock. Each processor has its
own local memory.


The processors in the system are connected through a
communication network.


Communication takes place using a
protocol.


TCP/IP, SPX/IPX, etc.


A distributed system provides user access to various
system resources.


Access to a shared resource allows:


Computation speed
-
up


Increased data availability


Enhanced reliability

Protection System


Protection

refers to a mechanism for
controlling access by programs, processes,
or users to both system and user
resources.


The protection mechanism must:


distinguish between authorized and
unauthorized usage.


specify the controls to be imposed.


provide a means of enforcement.

Command
-
Interpreter System


Primary interface between user and OS.


Usually a System Program. Not part of the
kernel.


Many commands are given to the operating
system by control statements which deal with:


process creation and management


I/O handling


secondary
-
storage management


main
-
memory management


file
-
system access


protection


networking

Command
-
Interpreter System (Cont.)


The program that reads and interprets control
statements is called as


command
-
line interpreter


shell (in UNIX/LINUX)



Its function is to get and execute the next
command statement.


Command interpreter can either be Text based
or GUI based.


Almost all the OS now support GUI based command
interpreter one way or another.


Built in GUI of MS
-
Windows XX and MacOS or GUI
environments for Linux, Unix (Called X
-
Windows).

Operating System Services


Program execution



system capability to load a program
into memory and to run it.


I/O operations



since user programs cannot execute I/O
operations directly, the operating system must provide some
means to perform I/O.


File
-
system manipulation



program capability to read, write,
create, and delete files.


Communications



exchange of information between
processes executing either on the same computer or on
different systems tied together by a network. Implemented
via
shared memory

or
message passing
.


Error detection



ensure correct computing by detecting
errors in the CPU and memory hardware, in I/O devices, or
in user programs.

Additional Operating System Functions

Additional functions exist not for helping the
user, but rather for ensuring efficient system
operations.


Resource allocation



allocating resources to
multiple users or multiple jobs running at the
same time.


Accounting



keep track of and record which
users use how much and what kinds of
computer resources for account billing or for
accumulating usage statistics.


Protection



ensuring that all access to system
resources is controlled.

System Calls


System calls provide the interface between a
running program and the operating system.


Generally available as
assembly
-
language

instructions.


Languages defined to replace assembly language for
systems programming allow system calls to be made
directly (e.g., C, C++)


In Ms
-
Windows System Calls are part of Window’s
Application Programmer Interface (API) are
available to Compilers (VC++, TC, BC).


Simply, A System Call means how many times a
user program (your program in C++, Java) is calling
Operating System.


In Case of Windows XP how many times your program
called the Windows XP’s built in functions.


System Calls


System Calls run in Privileged mode.


Three general methods are used to pass
parameters between a running program and the
operating system.


Pass parameters in
registers
.


Store the parameters in a table in memory, and the table
address is passed as a parameter in a register.


Push

(store) the parameters onto the
stack

by the program,
and
pop

off the stack by operating system.

Printf function… does it make use of System Calls?

Try a simply program and add “Hello World” in While(1) loop. And then look at the

TaskManager (ALT+CTRL+DEL) or download STRACE utility

Windows NT System Calls

(Dump from STRACE Utility)


1 133 139
NtOpenKey

(0x80000000, {24, 0, 0x40, 0, 0,
"
\
Registry
\
Machine
\
Software
\
Microsoft
\
Windows
NT
\
CurrentVersion
\
Image File Execution
Options
\
notepad.exe"}, ... ) ==
STATUS_OBJECT_NAME_NOT_FOUND


2 133 139
NtCreateEvent
(0x100003, 0x0, 1, 0, ... 8, ) == 0x0


3 133 139
NtAllocateVirtualMemory

(
-
1, 1243984, 0, 1244028,
8192, 4, ... ) == 0x0





6 133 139
NtOpenDirectoryObject

(0x3, {24, 0, 0x40, 0, 0,
"
\
KnownDlls"}, ... 12, ) == 0x0


7 133 139
NtOpenSymbolicLinkObject

(0x1, {24, 12, 0x40, 0,
0, "KnownDllPath"}, ... 16, ) == 0x0


8 133 139
NtQuerySymbolicLinkObject

(16, ...
"C:
\
WINNT
\
system32", 0x0, ) == 0x0


9 133 139
NtClose

(16, ... ) == 0x0

Passing of Parameters As A Table

Types of System Calls


Process control


File management


Device management


Information maintenance


Communications

MS
-
DOS Execution

At System Start
-
up

Running a Program

UNIX Running Multiple Programs

Communication Models

Msg Passing

Shared Memory


Communication may take place using either
message passing or shared memory.

Message Passing Model


Before communication, connection must be opened


Both the processes must be programmed in such a way
that they can accept or request a connection


Connections are opened using ProcessID’s and HostID’s


Calling process requests connection while receiving
process has ability to accept or reject the request.


Both the processes usually have two events
Receive_Data and Send_Data.


If process A wants to communicate with process B then


A Requests for Connection


B Accepts the connection


A Sends data (its query, question, variable)


B receives the data and works on the data and then sends back
the results to A


Usually in distributed environment this is the only method
which can be utilized.
Socket Programming

Shared Memory Model


Use of Global memory space.


Process A and Process B establish one global
space and work on that space.


Requires synchronization (difficult to handle) but
very easy to implement.


Process A and process B are two threads who want to
share memory


A will write to global memory space of the program and B
would read from that memory space.


Problem arises when A process was unable to write and B
process reads from that memory space. (Drastic result


)


Most programmers favor this method only because of very
easy implementation and requires not programming
overloads


.



System Programs


System programs provide a convenient
environment for program development and
execution. The can be divided into:


File manipulation


Status information


File modification


Programming language support


Program loading and execution


Communications


Application programs


Most users’ view of the operation system is defined
by system programs, not the actual system calls.

System Programs


Most OS supply programs that solve common
problems as Web Browsers, Scan Disk etc.


Command Interpreter is example of System Program


One method is that command interpreter contains
built in function calls such as create file, delete file,
Copy file, Change Directory etc.


Another method is that command interpreter can
call other system programs.. More flexible.


Unix uses second method and MS uses hybrid
method.


Copy Command is built in the command interpreter system
but XCopy command is a separate system program.


Operating System Design and
Implementation


Design Goals


Choice of hardware & Type of system


Users goals and System goals


Mechanisms and policies


How to & What to


Priority of I/O intensive programs over CPU Intensive programs.


microkernel


Implementation


Linux and Windows in C, DOS in assembly


Easier to port OR faster? Increased storage?


Better data structure and algorithms or assembly language?

System Design Goals


User goals


operating system should be
convenient to use, easy to learn, reliable,
safe, and fast.


System goals


operating system should
be easy to design, implement, and
maintain, as well as flexible, reliable, error
-
free, and efficient.

Mechanisms and Policies


Mechanisms determine how to do
something, policies decide what will be
done.


The separation of policy from mechanism
is a very important principle, it allows
maximum flexibility if policy decisions are
to be changed later.

System Implementation


Traditionally written in assembly language,
operating systems can now be written in
higher
-
level languages.


Code written in a high
-
level language:


can be written faster.


is more compact.


is easier to understand and debug.


An operating system is far easier to
port

(move to some other hardware) if it is
written in a high
-
level language.

Operating System Structure





Simple Structure


MS DOS System Structure


Unix system structure


Layered Approach


Microkernels


Modules

MS
-
DOS System Structure


MS
-
DOS


written to provide the most
functionality in the least space


not divided into modules


Single Tasked.


Terminate and Stay Resident (TSR) programs
did some sort of multi
-
programming by hooking
interrupts.


Although MS
-
DOS has some structure, its
interfaces and levels of functionality are not well
separated.

MS
-
DOS Layer Structure

UNIX System Structure



UNIX


limited by hardware functionality, the
original UNIX operating system had limited
structuring. The UNIX OS consists of two
separable parts.


Systems programs


The kernel


Consists of everything below the system
-
call interface
and above the physical hardware


Provides the file system, CPU scheduling, memory
management, and other operating
-
system functions; a
large number of functions for one level.

UNIX System Structure

Layered Approach


Modular approach.


The operating system is divided into a
number of layers (levels), each built on top
of lower layers. The bottom layer (layer 0),
is the hardware; the highest (layer N) is
the user interface.


With modularity, layers are selected such
that each uses functions (operations) and
services of only lower
-
level layers.

Layered Approach


Debugging is fairly easy as it can be
implemented in layers.


Each layer only uses its own calls or calls (procedures)
of the layer beneath it.


Difficulty is Careful definition of layers, because
each layer can only use layers beneath it.


Driver routine for management of
hard disk space

must
be below the memory management routines because
virtual memory needs disk space.


Another problem is that layered approach tends
to be a little slow at times because each process
has to go through subsequent layers and each
layer might add extra calculations or traps.

An Operating System Layer

Microkernel System Structure


Kernels grew in size with increased functionality in
the OS. This give birth to the idea of Micro Kernel


Remove unnecessary programs from the kernel
into the user space.


Communication takes place between user modules
using message passing.


Idea of having Clients and Servers within one
system. If a program wants to access a file it does
not interact directly with kernel but kernel is just
used to pass the messages indirectly.

Microkernels


Benefits:


-

easier to extend a microkernel


-

easier to port the operating system to new
architectures, As OS main function (kernel) is a
small code.


-

more reliable (less code is running in kernel
mode)


-

more secure (most of the services are running
is user mode hence hacking into the service
doesn’t provide full access to system kernel)


Operating Systems: Mach OS, Windows NT,
Mklinux (Not the linux we know),etc


Monolithic vs Microkernel


What is implemented in kernel space?


Monolithic


All OS abstractions (e.g. drivers, file systems,
networking, device multiplexing)


Low level, platform independent facilities


OS Personality features


Microkernel


device drivers, virtual memory and task scheduling
facilities in kernel


File systems, networking in user space

Modules

Mach

BSD

Application environment

and common services

Solaris Loadable modules

The Mac OS X structure

Memory

management

RPC

IPC

Thread

Scheduling

Command line


interface

File systems

POSIX API

Windows NT Architecture (Simplified View)


In modern operating systems, applications are
kept separate from the operating system itself.


The operating system code runs in a privileged
processor mode known as
kernel
-
mode

and has
access to system data and hardware.


Applications run in a non
-
privileged processor
mode known as user mode and have limited
access to system data and hardware through a
set of tightly controlled application programming
interfaces (APIs).

Windows NT (Case Study)


Windows

NT is a multithreaded
microkernel
-
based operating
system
. This is akin to Mach, a multithreaded, microkernel
-
based UNIX operating system


Keeping the base operating system as small and as tight as
possible was one of the primary design goals of Windows

NT.


To do this, Microsoft kept in the base operating system only
those functions that could not reasonably be performed
elsewhere.


Functionality pushed out of the kernel was put in six non
-
privileged servers known as protected subsystems.


The protected subsystems provide the traditional operating
system support to applications through a feature
-
rich set of
APIs.


Note: With Windows

NT version 4.0, the GUI system was put “back” into
the kernel for display performance considerations. (This also caused
some robustness problems)

Windows NT (Case Study)


This design results in a very stable base
operating system. Enhancements occur at
the protected subsystem level.


New protected subsystems can be added
without modifying either the base
operating system or the other existing
protected subsystems

Windows NT (Environment Subsystems)


Win32


2000 uses the Win32 subsystem as the main operating
environment; Win32 is used to start all processes. It
also provides all the keyboard, mouse and graphical
display capabilities.


MS
-
DOS


MS
-
Dos environment is provided by a Win32 application
called the
virtual dos machine

(VDM), a user
-
mode
process that is paged and dispatched like any other
2000 thread.


OS/2 subsystems runs OS/2 applications.


IBM and MS were developing OS/2 together when BILL
GATES had a brilliant idea, People call Bill Gates a big
cheat because of this idea but nonetheless it was
brilliant for the Computer industry.



Windows NT (Environment Subsystems)


16
-
Bit Windows Environment:


Provided by a VDM that incorporates
Windows on
Windows
.


Provides the Windows 3.1 kernel routines and sub
routines for window manager and GDI functions.


The POSIX subsystem


Is designed to run POSIX applications following the
POSIX.1 standard which is based on the UNIX model.


Logon and Security Subsystems



Authenticates users logging to Windows 2000 systems.
Users are required to have account names and
passwords.



The authentication package authenticates users
whenever they attempt to access an object in the system.


Virtual Machines


A
virtual machine

takes the layered
approach to its logical conclusion. It treats
hardware and the operating system kernel
as though they were all hardware.


A virtual machine provides an interface
identical

to the underlying bare hardware.


The operating system creates the illusion
of multiple processes, each executing on
its own processor with its own (virtual)
memory.

Virtual Machines (Cont.)


The resources of the physical computer
are shared to create the virtual machines.


Each process is provided with a virtual copy of
the underlying computer.


Minidisks


Virtual
-
machine software runs in kernel mode


Virtual user mode, virtual kernel mode

--
(physical user mode)


Share minidisk



System Models

Non
-
virtual Machine

Virtual Machine

Advantages/Disadvantages of Virtual
Machines


The

virtual
-
machine

concept

provides

complete

protection

of

system

resources

since

each

virtual

machine

is

isolated

from

all

other

virtual

machines
.

This

isolation,

however,

permits

no

direct

sharing

of

resources
.


A

virtual
-
machine

system

is

a

perfect

vehicle

for

operating
-
systems

research

and

development
.

System

development

is

done

on

the

virtual

machine,

instead

of

on

a

physical

machine

and

so

does

not

disrupt

normal

system

operation
.


The

virtual

machine

concept

is

difficult

to

implement

due

to

the

effort

required

to

provide

an

exact

duplicate

to

the

underlying

machine
.

Java Virtual Machine


Compiled Java programs are platform
-
neutral bytecodes executed by a Java
Virtual Machine (JVM).


JVM consists of


-

class loader


-

class verifier


-

runtime interpreter


VMware


Guest and host operating system


Good for testing


Virtualization layer


CPU

memory

I/O devices

hardware

Host operating system (Linux)

Virtualization Layer

application

application

application

application

Guest
operating
system

Guest
operating
system

Guest
operating
system

Java Virtual Machine


Class


Bytecode


Jvm


class loader & Java interpreter


JVM in hardware
--
Java chip

Java Virtual Machine

What is DotNet Architecture?

System Generation (SYSGEN)


Operating systems are designed to run on any of
a class of machines; the system must be
configured for each specific computer site.


SYSGEN program obtains information
concerning the specific configuration of the
hardware system.


Booting



starting a computer by loading the
kernel.


Bootstrap program



code stored in ROM that is
able to locate the kernel, load it into memory,
and start its execution.

System Boot (Cont)


Bootstrap

locates

the

kernel

and

loads

it

into

main

memory,

and

starts

its

execution
.


Bootstrap

loader

fetches

a

more

complex

boot

program

from

disk,

which

in

turn

loads

the

kernel
.


Bootstrap

is

in

the

form

of

read
-
only

memory


Instruction

register

is

loaded

with

a

predefined

memory

location

and

execution

starts

there
.


Some

system

store

the

OS

in

firmware

and

copy

it

to

RAM

for

fast

execution
.


Bootstrap

loader

in

firmware,

OS

on

disk


boot

block

(block

zero)

---
windows,

Mac

OS

X,

Unix


Boot

disk



system

disk


Bootstrap

traverse

the

file

system

and

finds

the

OS

kernel