28
Multiprogramming

Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Embed Size (px)

Citation preview

Page 1: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Multiprogramming

Page 2: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Readings

Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8th edition: Chapter 3.1, 3.2

Page 3: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Example

Let’s say that you had a program that initialized the value of x to 0 and then incremented x by 1

What if you printed the value of x to the screen?

What if you printed the value of x to a file? Does it make a big difference in time?

Page 4: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Multiprogramming

Assume we have two programs P and Q. Each is started up to make two processes p

and q. It is not the case that process p has all its

instructions finished before process q Process p has an instruction that requires a

read/write from/to disk (or terminal) Reading from disk is slow Why not have instructions from q execute

while p is waiting?

Page 5: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Why Multiprogramming?

Take an editor such as Emacs or a word processor such as Word These program often have to get more data

from disk Program is blocked until the data is

retrieved There is a gap between CPU speed and disk

speed

Page 6: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Multiprogramming

Multiprogramming allows for the execution of multiple processes

But only one process active at any time

Page 7: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Why Multiprogramming? Operating systems allow for interleaved

execution On a single-processor system, no more than

one process ever runs. However, one process’s instructions may be

executed before the completion of the instructions from another process

The objective is to have some process running at all times in order to maximize CPU utilization.

Page 8: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Modeling Multiprogramming

The more I/O the less CPU is utilized unless you have multiprogramming

Page 9: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Switching Current process executes an I/O

operation OS needs to be able to suspend current

process so that another process can execute

This is referred to as context switching

Page 10: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Switching

OS needs to be able to suspend current process

OS captures information about a process

Information captured must be sufficient to restore the hardware to the same configuration it was in when the process was switched out.

Page 11: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Characterizing a Process

Each process is represented in the OS by a process control block (PCB) which contains all the state for a program in execution including (but not limited to): Pointer to text, data and stack segment information An execution stack encapsulating the state of

procedure calls The program counter (PC) indicating the next

instruction Current values of the set of general-purpose

registers A set of operating system resources e.g., open files,

network connections Process identifier (PID) Process priority (for scheduling purposes) etc

Page 12: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Control Block (PCB)

Page 13: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

13

Context Switching

Program instructions operate on operands in memory and (temporarily) in registers

Memory

Prog1Code

Prog1Data

CPU

ALU

SP PC

Prog2State

Prog1 has CPU

Prog2 is suspended

Prog2Code

Prog2Data

Load A1, R1

Load A2, R2

Add R1, R2, R3

Store R3, A3

Page 14: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

14

Context Switching

Saving all the information about a process allows a process to be temporarily suspended and later resumed from the same pointMemory

Prog1Code

Prog1Data

CPU

ALU

SP PC

Prog1State

OS suspends Prog1

Prog2Code

Prog2Data

Prog2State

Page 15: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

15

Context Switching

Saving all the information about a process allows a process to be temporarily suspended and later resumed

Memory

Prog1Code

Prog1Data

CPU

ALU

SP PC

Prog1State

OS resumes Prog2

Prog2Code

Prog2Data

Prog2State

Page 16: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

16

Context Switching

Program instructions operate on operands in memory and in registers

Memory

Prog1Code

Prog1Data

CPU

ALU

SP PC

Prog1State

Prog2 has CPU

Prog1 is suspended

Prog2Code

Prog2Data

Load A1, R1

Load A2, R2

Sub R1, R2, R3

Store R3, A3

Page 17: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

PCB Representation in Linux

The process control block is represented by the C structure task_struct

Some of the fields in task_struct include:

pid_t pid; /* process identifier*/long state; /*state of the process*/unsigned int time_slice; /*scheduling information */struct task_struct sibling; /*this process’s siblings */struct list_head children; /* this process’s children */struct files_struct *files; /*list of open files*/

Page 18: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Representation in Linux

All active processes are represented using a doubly linked list of task_struct

The kernel maintains a pointer, current, to the process currently executing on the system

Example of the kernel manipulating one the fields in the task_struct is this:

current->state = new_state

Page 19: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Execution States

As a process executes, it changes execution state

The execution state of a process is defined in part by the current activity of the process

A process may be in one of the following execution states: New: The process is being created Running: Instructions are being executed Waiting: The process is waiting for some event to

occur (such as an I/O completion or reception of signal)

Ready: The process is waiting to be assigned to a processor

Exit: The process has finished executing Only one process can be running on any

processor at any instant Many processes may be ready and waiting

Page 20: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Execution States

New Ready Running Exit

Waiting

When you run a program, a new process is created

If the system has sufficient memory, then the new process is loaded into memory and placed in ready queue

CPU scheduler takes a process from the head of a ready queue to execute(Sometimes, there may be multiple ready queues.)

Admit

Dispatch

Timeout

Event Occurs

Event Wait

After finish execution, exit

If processes are scheduled in a round robin manner, then when time quantum expires,the process is returned to ready queue

When the wait for I/O is over there is a return to the Ready state

Process may be blocked by:- I/O (wait for I/O to

complete)- semaphore wait- sleep- etc.When the waiting is over®An interrupt is generated®P ready queue

Page 21: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Process Execution States

New Ready Running Exit

Waiting

When you run a program, a new process is created

If the system has sufficient memory, then the new process is loaded into memory and placed in ready queue

CPU scheduler takes a process from the head of a ready queue to execute(Sometimes, there may be multiple ready queues.)

Admit

Dispatch

Timeout

Event Occurs

Event Wait

After finish execution, exit

If processes are scheduled in a round robin manner, then when time quantum expires,the process is returned to ready queue

When the wait for I/O is over there is a return to the Ready state

Process may be blocked by:- I/O (wait for I/O to

complete)- semaphore wait- sleep- etc.When the waiting is over®An interrupt is generated®P ready queue

Page 22: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Question

Why is there no arrow from waiting to running?

When should a process be preempted?

Page 23: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Scheduling

The purpose of multiprogramming is to have a process running at all times

The objective of time sharing is to switch the CPU among processes so frequently that users can interact with each process

The process scheduler selects an available process

There may be multiple processes to select from

Page 24: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Scheduling Queues

As processes enter the system, they are put into a job queue, which consists of all processes in the system

The processes that are residing in main memory and are ready and waiting to execute are kept on a list called the ready queue

Queues are implemented using linked list A ready queue header contains pointers to the

first and last final process control blocks in the list

Each PCB includes a pointer field that points to the next PCB in the ready queue

Page 25: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Other Queues

When a process is allocated the CPU, it executes for a while and eventually quits, is interrupted, or waits for the occurrence of a particular event, such as the completion of an I/O request

The list of processes waiting for a particular I/O device is called a device queue

Page 26: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Ready Queue and Various I/O Device Queues

Page 27: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Issues Related to Multiprogramming

Shell Creating new processes (already discussed)

Threads A “lighter weight” process

Scheduling Determining when a process should run

Booting How do we get the first process

Page 28: Multiprogramming. Readings r Silberschatz, Galvin, Gagne, “Operating System Concepts”, 8 th edition: Chapter 3.1, 3.2

Summary

Discussed the need for multiprogramming

Process representation