csc432-week05x - Rensselaer Polytechnic Institute: Computer

Download Report

Transcript csc432-week05x - Rensselaer Polytechnic Institute: Computer

Rensselaer Polytechnic Institute
CSC 432 – Operating Systems
David Goldschmidt, Ph.D.

Using a layered approach, the operating
system is divided into N levels or layers
 Layer 0 is the hardware
 Layer 1 is often the kernel
 Layer N is the top-level
user interface (GUI)
 Each layer uses functions
and services of the layer
(or layers) beneath it

Also view
as a stack
of services

The core program running in
an operating system is called
the kernel
 When a computer is switched on,
a bootstrap program executes from ROM
 The bootstrap program initializes the system,
then loads the operating system kernel and
starts its execution

Program instructions run either
in user mode or in kernel mode
switch modes
via system calls
 Kernel mode allows the operating system
to protect itself and its system components

Kernel gives control to a user process, but
may set a timer to ensure a process does
not run beyond its allotted time
 To avoid infinite loops, memory
leaks, memory hogs, etc.
 Not always effective in practice...
▪ Can you stop a runaway process
before your computer crashes?
Aaaaaaaugghhhh!
I’m going to take
this computer and...

OS services are available via system calls
 System calls are made via an interface called
an Application Program Interface (API)
 Common operating system APIs:
▪ Win32 API for Windows
▪ POSIX API for POSIX-based systems,
including UNIX, Linux, Mac OS X
▪ Java API for Java Virtual Machine
▪ C/C++ Standard Library

Types of system calls include:
 Process control (e.g. start/suspend/stop a process)
▪ Debugging information, too
 File management
 Device management
 Information retrieval and maintenance
▪ Current date/time, number of current users, OS version,
amount of free memory, process information, etc.
 Communications (e.g. IPC, network)

An API hides the implementation details of
the underlying operating system
 Programmers just need to abide by
the API specifications
 How do we change the API or
the operating system services
that it offers?
the dude abides...

Example using the printf()
function from C

One API may call
another, which may
in turn call another,
and so on...

Use registers to pass parameters:
 Store memory location X that references a block
of data somewhere in memory

An operating system provides services:
 Program execution
▪ Load programs into memory, run/suspend/halt
programs, handle/display errors
 I/O operations
▪ Seamlessly interact with I/O devices, including
disks, networks connection, etc.
 Filesystem manipulation
▪ Read/write/traverse filesystem directories,
read/write files, enforce permissions, search for files

Other operating system services:
 Inter-Process Communications (IPC)
▪ Processes exchange information via shared memory,
message passing, sockets, pipes, files, etc.
▪ Often spans multiple computers and networks
 Error detection and recovery
▪ Detect errors in CPU, memory, I/O devices,
processes, network connections, etc.
▪ Recover from errors gracefully,
ensuring correct and consistent operations

Multiprogramming goals:
 Maximize CPU utilization
 Maximize number of processes in memory

Timesharing goals:
 Switch CPU among processes such that users
interact with each program simultaneously
almost!
 Maximize fairness

Processes are created by
the operating system
 Processes initially added to
a job queue, which contains
all processes waiting to enter the system
 From the job queue, processes that
are ready for execution are added
to the ready queue

A long-term scheduler (i.e. job scheduler)
selects processes from the job queue,
adding those processes to the ready queue

A short-term scheduler (i.e. CPU scheduler)
selects processes from the ready queue
and allocates time with the CPU
 More on this later....

The long-term scheduler is
invoked infrequently

The degree of multiprogramming of
an operating system is defined as
the number of processes in memory
 In a stable operating system,
the average process arrival rate equals
the average process departure rate

Processes are either I/O bound or CPU bound
 A CPU-bound process does little I/O and instead
makes heavy use of the CPU
 An I/O-bound process spends a majority of its
time performing (i.e. waiting for) I/O

The long-term scheduler should select a
good process mix of CPU-bound and I/Obound processes

Most modern operating systems have no
long-term scheduler (e.g. Windows, UNIX)
 All processes are admitted to
the ready queue, regardless
of whether the operating
system can handle the load
 Often results in users
changing their usage habits....

Modern operating systems implement a
medium-term scheduler to swap processes
to/from memory and disk

A process is an active program in execution
 Requires CPU time, memory, file access,
network access, other I/O access

Operating system is responsible for:
 Creating/deleting processes
 Scheduling processes
 Allocating resources to processes
 Synchronizing communication between processes

For each process, the operating
system manages and executes
processes by recording:
heap
 Program counter (PC)
 Registers
 Data section (global data)
 Stack (temporary data)
 Heap
(dynamically allocated memory)
stack
data
text/code

As a process executes, it changes its state

Operating system represents each process
via a process control block (PCB)
 Process state
 Process ID or number
 Program counter (PC)
 CPU registers
 CPU-scheduling and memory
management information
 List of open file/resource handles
context switch takes
a few milliseconds

The short-term scheduler frequently decides
which process the CPU executes next
 Typical time slice (t) a process has with
the CPU is 100 milliseconds
 How much CPU time is wasted
if t is 100ms and it takes 10ms
to schedule the next process
and perform the context switch?

Processes are created from other processes
 A parent process creates a child process, which
in turn creates child processes of its own, etc.
 A tree of processes is the result:

Operating system resources are sometimes
shared amongst processes

Possibilities:
 Parent and child processes share all resources
 Child shares a subset of its parent’s resources
 Parent and child processes share no resources

Each process has its
own unique process
identifier (pid)

When a new process is created,
the parent has two options:
 Parent process continues to execute
concurrently with its children
 Parent process waits for its children to
terminate their execution

The child process decides what it will do:
 Duplicate the parent or load a new program

In Unix, a new child process is forked via
the fork() system call
 Child optionally calls the exec() system call
to load a new program