PESIT Bangalore South Campus Hosur road, 1km before Electronic City, Bengaluru -100 Department of MCA

Similar documents
Module 3. DEADLOCK AND STARVATION

University of Babylon / College of Information Technology / Network Department. Operating System / Dr. Mahdi S. Almhanna & Dr. Rafah M.

Concurrency, Mutual Exclusion and Synchronization C H A P T E R 5

Silberschatz, Galvin and Gagne 2013! CPU cycles, memory space, I/O devices! " Silberschatz, Galvin and Gagne 2013!

OPERATING SYSTEMS. Deadlocks

The Deadlock Problem (1)

COP 4610: Introduction to Operating Systems (Spring 2016) Chapter 7 Deadlocks. Zhi Wang Florida State University

Deadlocks. Operating System Concepts - 7 th Edition, Feb 14, 2005

The Slide does not contain all the information and cannot be treated as a study material for Operating System. Please refer the text book for exams.

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition! Silberschatz, Galvin and Gagne 2013!

Deadlocks. Prepared By: Kaushik Vaghani

Chapter 5 Concurrency: Mutual Exclusion and Synchronization

UNIT-5 Q1. What is deadlock problem? Explain the system model of deadlock.

Chapter 7: Deadlocks. Operating System Concepts 9th Edition DM510-14

Chapter 7: Deadlocks. Operating System Concepts 8th Edition, modified by Stewart Weiss

Chapter 7: Deadlocks. Operating System Concepts 8 th Edition,! Silberschatz, Galvin and Gagne 2009!

Chapter 7: Deadlocks

System Model. Types of resources Reusable Resources Consumable Resources

CS420: Operating Systems. Deadlocks & Deadlock Prevention

Chapter 7: Deadlocks

ICS Principles of Operating Systems. Lectures Set 5- Deadlocks Prof. Nalini Venkatasubramanian

OPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne

Deadlock. Chapter Objectives

Module 6: Deadlocks. Reading: Chapter 7

Chapter 7: Deadlocks. Operating System Concepts with Java 8 th Edition

The Deadlock Problem

Chapter 7: Deadlocks. Operating System Concepts 8 th Edition,

Operating Systems: Internals and Design Principles. Chapter 4 Threads Seventh Edition By William Stallings

Deadlock. Concepts to discuss. A System Model. Deadlock Characterization. Deadlock: Dining-Philosophers Example. Deadlock: Bridge Crossing Example

The deadlock problem

Contents. Chapter 8 Deadlocks

Maximum CPU utilization obtained with multiprogramming. CPU I/O Burst Cycle Process execution consists of a cycle of CPU execution and I/O wait

IT 540 Operating Systems ECE519 Advanced Operating Systems

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

CS307 Operating Systems Deadlocks

Deadlocks. Bridge Crossing Example. The Problem of Deadlock. Deadlock Characterization. Resource-Allocation Graph. System Model

CHAPTER 7 - DEADLOCKS

For use by students enrolled in #71251 CSE430 Fall 2012 at Arizona State University. Do not use if not enrolled.

Chapter 7: Deadlocks. Operating System Concepts 8 th Edition,

Lecture 7 Deadlocks (chapter 7)

Deadlocks. Dr. Yingwu Zhu

Chapter 7 : 7: Deadlocks Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8th Edition, Chapter 7: Deadlocks

Chapter 7: Deadlocks. Chapter 7: Deadlocks. The Deadlock Problem. Chapter Objectives. System Model. Bridge Crossing Example

CS 571 Operating Systems. Midterm Review. Angelos Stavrou, George Mason University

Chapter 8: Deadlocks

Chapter 8: Deadlocks. The Deadlock Problem. System Model. Bridge Crossing Example. Resource-Allocation Graph. Deadlock Characterization

Process Management And Synchronization

Deadlocks. Deadlock Overview

Module 7: Deadlocks. The Deadlock Problem. Bridge Crossing Example. System Model

The Deadlock Problem

CMSC 412. Announcements

UNIT 3. PROCESS MANAGEMENT

Chapter 8: Deadlocks. The Deadlock Problem

Chapter 7: Deadlocks

Deadlock Prevention. Restrain the ways request can be made. Mutual Exclusion not required for sharable resources; must hold for nonsharable resources.

Principles of Operating Systems

Chapter 6 Concurrency: Deadlock and Starvation

CSE Opera+ng System Principles

Principles of Operating Systems

Chapter 4 Threads, SMP, and

The Deadlock Problem

Module 7: Deadlocks. The Deadlock Problem

Topic 4 Scheduling. The objective of multi-programming is to have some process running at all times, to maximize CPU utilization.

Chapter 7: Deadlocks

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

Chapter 8: Deadlocks. Operating System Concepts with Java

Unit-03 Deadlock and Memory Management Unit-03/Lecture-01

Concurrency: Mutual Exclusion and Synchronization. Concurrency

Introduction to Deadlocks

CS307: Operating Systems

Operating System 4 THREADS, SMP AND MICROKERNELS

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Operating System. Chapter 4. Threads. Lynn Choi School of Electrical Engineering

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

Operating Systems 2015 Spring by Euiseong Seo DEAD LOCK

Deadlock Risk Management

Last Class: Synchronization Problems. Need to hold multiple resources to perform task. CS377: Operating Systems. Real-world Examples

ECE519 Advanced Operating Systems

Deadlocks. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Operating systems. Lecture 5. Deadlock: System Model. Deadlock: System Model. Process synchronization Deadlocks. Deadlock: System Model

Operating Systems. Deadlocks. Stephan Sigg. November 30, Distributed and Ubiquitous Systems Technische Universität Braunschweig

Chapter 7: Deadlocks CS370 Operating Systems

Resource allocation graph with a cycle but no deadlock

Resource Management and Deadlocks 1

Module 7: Deadlocks. System Model. Deadlock Characterization. Methods for Handling Deadlocks. Deadlock Prevention. Deadlock Avoidance

Bridge Crossing Example

Deadlock. Disclaimer: some slides are adopted from Dr. Kulkarni s and book authors slides with permission 1

Chapter 5 Concurrency: Mutual Exclusion. and. Synchronization. Operating Systems: Internals. and. Design Principles

Deadlock Risk Management

Last Class: Synchronization Problems!

CHAPTER 7: DEADLOCKS. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

General Objectives: To understand the process management in operating system. Specific Objectives: At the end of the unit you should be able to:

Lecture 3: Synchronization & Deadlocks

What is the Race Condition? And what is its solution? What is a critical section? And what is the critical section problem?

Final Exam Review. CPSC 457, Spring 2016 June 29-30, M. Reza Zakerinasab Department of Computer Science, University of Calgary

CSC Operating Systems Spring Lecture - XII Midterm Review. Tevfik Ko!ar. Louisiana State University. March 4 th, 2008.

Deadlocks. System Model

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

Deadlock. A Bit More on Synchronization. The Deadlock Problem. Deadlock Characterization. Operating Systems 2/7/2005. CSC 256/456 - Spring

Chapter - 4. Deadlocks Important Questions

Transcription:

SOLUTION SET- TEST 2 Subject & Code : Operating System (16MCA24) Name of faculty : Ms. Richa Sharma Max Marks: 40 1 Explain in detail Symmetric multiprocessing 8 2 Explain in detail principles of concurrency 8 3 Explain with an example Producer/consumer problem of semaphores 8 4 Explain i) Various conditions of deadlock ii) Dining Philosophers Problem 4 4 5 Explain the concept of Synchronization and addressing in message passing 8 6 Explain the concept of recovery from deadlock 8 7 Explain with the help of diagram various levels of threads along with its states 8 8 Explain in detail various steps of Banker s Algorithm and solve the following question with safety algorithm only 8 Consider 5 processes P0 through P4 and 3 resources A (10 instances), B (5 instances) and C (7 instances). Snapshot of the system at time T0 is given below

Solution Ans-1. Symmetric Multiprocessing Traditionally, the computer has been viewed as a sequential machine. That is, a processor executes instructions one at a time in a sequence and each instruction is a sequence of operations. But, as computer technology has evolved, parallel processing got importance. One of the popular approaches for providing parallelism is symmetric multiprocessors (SMPs), where processors are replicated. SMP Architecture Before understanding how SMP works, it is better to observe all parallel processors Single instruction single data (SISD) stream: A single processor executes a single instruction stream to operate on data stored in a single memory. Single instruction multiple data (SIMD) stream: Each instruction is executed on a different set of data by the different processors.

Multiple instruction single data (MISD) stream: A sequence of data is transmitted to a set of processors, each of execute a different instruction sequence. Multiple instructions multiple data (MIMD) stream: A set of processors simultaneously executes different instruction sequences on different data sets. Based on the communication among processors, MIMD can be further divided. If every processor has a dedicated memory, then each processing element is a selfcontained computer. Communication among the computers is either via fixed path or via some network. Such a system is known as a cluster. If the processors share a common memory, it is known as shared-memory multiprocessor. This again can be further divided into master/slave architecture and SMP. The master/slave architecture has disadvantages: A failure of the master brings down the whole system As master has to do all scheduling and process management, the performance may slow down. But, in SMP, the kernel can execute on any processor and it allows portions of kernel to execute in parallel. Here, each processor does self-scheduling from the pool of available process or threads. SMP Organization In SMP, there are multiple processors, each of which contains its own control unit, arithmetic-logic unit and registers. Each processor has access to a shared main memory and the I/O devices through a shared bus.

Multiprocessor OS Design Considerations An SMP OS manages processor and other computer resources so that the user may view the system as if it is a multiprogramming uni-processor system. Hence, the design issues of SMP OS are as below: Simultaneous concurrent processes or threads: Kernel routines should allow several processors to execute the same kernel code simultaneously. Scheduling: Scheduling may be performed by any processor to avoid conflicts. Synchronization: As multiple active processes can access shared address spaces and shared I/O resources, proper synchronization between the processes must be achieved. Memory Management: All the issues of memory management found in a uniprocessor system have to be addressed here as well. Reliability and Fault Tolerance: OS should provide graceful degradation in case of processor failure.

Ans-2 Principles of Concurrency In a single processor systems, the processes are switched (interleaved) among themselves and appear to be executed simultaneously. In multiprocessing systems, the processes may be switched as well as overlapped. Single processing System- Interleaving of processes Multi-processing System- Interleaving and Overlapping Interleaving and overlapping cause certain problems as listed below: Sharing of global resources may be dangerous Optimal allocation of resources may be difficult for OS

Difficult to locating programming errors Example: Consider the following function: void echo() { chin = getchar(); chout = chin; putchar(chout); } It is easily observed that chin and chout are global variables. The function echo() read one character from the keyboard and stores into chin. It is then assigned to chout. And hen it is displayed. The echo () function is global and available to all applications. Hence only a single copy of echo () is loaded into main memory. Sharing of such global variable will cause certain problems in both singleprocessor and multi-processor systems. In a single-processor multiprogramming system, assume there is only one I/O devices (keyboard and monitor). Assume, a process P1 invokes echo () function and it is interrupted immediately (due to some reason) after reading a character, say, x from the keyboard. Now, the global variable chin contains x. At this moment of time, the process P2 invokes the function echo()and executes. Let the character read now be y. Assume, the process P2 completes its execution and displays y. Now, the process P1 is resumed and displays the character as y, because, the recent content of chin is being y. To solve this problem, only one process should be allowed to invoke echo() function for a given moment of time. That is, when P1 has invoked the function and got interrupted, P2 may try to invoke the same function. But, P2 must be suspended and should be made to wait. Only after P1 comes out of the echo() function, P2 must be resumed. Thus, it is necessary to control the code for protecting shared global variable (or any other global resources). In a multiprocessor system, similar problem occurs. Consider there are two

processes P1 and P2 executing on two different processors. The execution of instructions of echo() function for both P1 and P2 are as shown below. Note that, the instructions on same line executes in parallel. Race Condition A race condition occurs when multiple threads/processes read/write data items so that the final result depends on order of execution of instructions. Consider two examples to understand this concept. Example 1: Assume that two processes P1 and P2 are sharing a global variable a. The process P1 has an instruction to update the value of a as a= 1; The process P2 also has an instruction a= 2; Both P1 and P2 will be executing their own set of instructions. Now, the value of a depends on the order of execution of above statements. In other words, the loser of the race (the process which executes last) will decide the value of a. Example 2: Let there are two processes P3 and P3 sharing two global variables b and c. Initially, b=1 and c = 2 The process P3 has a statement b=b+c; whereas, the process P4 has a statement c=b+c; One can easily make out that, the final value of b and c depends on order of execution of both of these statements. If P3 executes first, b =3 and c = 5 On the other hand, if P4 executes first, b= 4 and c = 3

Operating System Concerns With respect to concurrency, following design issues OS have to be considered. The OS must keep track of processes allocate and de-allocate resources to active processes. Protect the data and resources against interference by other processes. Ensure that the processes and outputs are independent of the processing speed. To understand the speed independence, the various ways of process interaction has to be considered. Process Interaction The ways in which processes are interacted is depending on how/whether they are aware of each other s existence. Ans-3 Producer/Consumer problem The producer/consumer problem is one of the most commonly faced problems in concurrent processing. The general statement is this: There are one or more

producers generating some type of data (records, characters) and placing these in a buffer. There is a single consumer that is taking items out of the buffer one at a time. The system is to be constrained to prevent the overlap of buffer operations. That is, only one agent (producer or consumer) may access the buffer at any one time. The problem is to make sure that the producer won t try to add data into the buffer if it s full and that the consumer won t try to remove data from an empty buffer. Let us assume that the buffer is of infinite size. Consider the code segments for producer and consumer as given below: The producer can generate items and store them in the buffer at its own speed. Each time, an index in is incremented. The consumer proceeds in a similar fashion but must make sure that it does not attempt to read from an empty buffer. Hence, the consumer makes sure that the producer is ahead of consumer (in > out).

If we add a realistic restriction on this problem, it can be solved easily using semaphore. The restriction is: instead of taking infinite buffer, consider a finite buffer of size n having a circular storage. Since, it will work in circular manner, the pointers in and out will be considered with modulo n. Now, the situations would be

Ans-4 (i) Various conditions of deadlock Following are the conditions for deadlock to present: Mutual exclusion: only one process can use a resource at a time Hold and wait: a process holding at least one resource is waiting to acquire additional resources held by other processes. No preemption: a resource can be released only voluntarily by the process holding it, after that process has completed its task. Circular wait: there exists a set {P0, P1,, Pn} of waiting processes such that P0 is waiting for a resource that is held by P1, P1 is waiting for a resource that is held by P2, and so on, Pn 1 is waiting for a resource that is held by Pn, and Pn is waiting for a resource that is held by P0. (ii) Dining Philosophers Problem The dining philosopher s problem can be explained as below: Five philosophers live in a house, where a table is laid for them. The life of each philosopher consists of thinking and eating. The food they eat is spaghetti. Each philosopher requires

two forks to eat spaghetti. The eating arrangements are simple. There is a round table on which is set a large serving bowl of spaghetti, five plates, one for each philosopher, and five forks. A philosopher wishing to eat goes to his or her assigned place at the table and, using the two forks on either side of the plate, takes and eats some spaghetti. The problem: Devise an algorithm that will allow the philosophers to eat. The algorithm must satisfy mutual exclusion (no two philosophers can use the same fork at the same time) while avoiding deadlock and starvation. Key points of dining philosopher s problem: illustrates basic problems in deadlock and starvation reveal many of the difficulties in concurrent programming deals with the coordination of shared resources, which may occur when an application includes concurrent threads of execution it is a standard test case for evaluating approaches to synchronization

Solution using Semaphores The dining philosopher s problem can be solved using semaphores code Each philosopher picks up the fork on the left side first and then the fork on the right. After the philosopher is finished eating, the two forks are replaced on the table. This solution leads to deadlock: If all of the philosophers are hungry at the same time, they all sit down, they all pick up the fork on their left, and they all reach out for the other fork, which is not there. In this undignified position, all philosophers starve. To overcome the risk of deadlock, we could buy five additional forks or teach the philosophers to eat spaghetti with just one fork. As another approach, we could consider adding an attendant who only allows four philosophers at a time into the dining room. With at most four seated philosophers, at least one philosopher will have access to two forks. Solution using Monitors Here, some condition variables are set to see that each philosopher must wait for the availability of the fork. A function (for entering a monitor) has to be written so that, a philosopher must seize two forks on his left and right sides. If anyone fork is

not available, he must wait. Now, another philosopher can enter the monitor and try his luck. Another function has to be written for releasing the forks when a philosopher finishes eating. In this solution, deadlock will not occur. Ans-5 Synchronization and addressing in message passing Synchronization: When a message is being passed from one process to the other, there must be some level of synchronization. That is, wee need to specify what happens to a process after it issues a send or receive primitive. Three situations may arise now: Blocking send, blocking receive: Both the sender and receiver are blocked until the message is delivered; this is sometimes referred to as a rendezvous. This combination allows for tight synchronization between processes. Nonblocking send, blocking receive: The sender may continue, but the receiver is blocked until the requested message arrives. This is probably the most useful combination. It allows a process to send one or more messages to a variety of destinations as quickly as possible. A process that must receive a message before it can do useful work needs to be blocked until such a message arrives. Nonblocking send, nonblocking receive: Neither party is required to wait. The non-blocking send is most generic and useful in many situations. Still, it has a problem: an error could lead to a situation in which a process repeatedly generates messages. Because there is no blocking to discipline the process, these messages could consume system resources, including processor time and buffer space. Also, the nonblocking send places the burden on the programmer to determine that a message has been received: Processes must employ reply messages to acknowledge receipt of a message. For receive primitive, blocking seems to be good idea. But, if the message is lost (say, in a distributed system setup) before it is being received, then the process may remain blocked for indefinite time.

Addressing: It is necessary to specify in the send primitive that to which process the message is being sent. Similarly, a receive primitive may get to know from where it is receiving the message. To maintain this information, two types of addressing are used. Direct Addressing: Here, the send primitive includes the identifier (or address) of the destination process. The receive primitive may include the information about the source process. That is, the receiving process has prior knowledge about the sending process. But, in some cases, it is impossible to know the sender. For example, a printer connected to a networked system will not know from where it is receiving the print command before receiving the actual command. Hence, after receiving the message, the receiver can acknowledge the sender. Indirect Addressing: Here, messages are not sent directly from sender to receiver but rather are sent to a shared data structure consisting of queues that can temporarily hold messages. Such queues are generally referred to as mailboxes. Thus, for two processes to communicate, one process sends a message to the appropriate mailbox and the other process picks up the message from the mailbox. The indirect addressing facilitates decoupling of sender and receiver and hence allows greater flexibility. The relationship between sender and receiver may be one-to-one: allows a private communications link to be set up between two processes. There won t be any interference. one-to-many: allows for one sender and multiple receivers; it is useful for applications where a message or some information is to be broadcast to a set of processes. many-to-one: is useful for client/server interaction; one process provides service to a number of other processes. In this case, the mailbox is often referred to as a port. many-to-many: A many-to-many relationship allows multiple server processes to provide concurrent service to multiple clients. The association of mailboxes to processes may be static or dynamic. Usually, one to-one relationship is static. Ports are statically associated and owned by the receivers. In other two cases, the association will by dynamic and managed by OS.

Ans-6 Recovery from deadlock When a detection algorithm determines that a deadlock exists, several alternatives available. One possibility is to inform the operator that a deadlock has occurred, and to let the operator deal with the deadlock manually. The other possibility is to let the system recover from the deadlock automatically. There are two options for breaking a deadlock. One solution is simply to abort one or more processes to break the circular wait. The second option is to preempt some resources from one or more of the deadlocked processes. Process Termination Processes can be aborted for eliminating deadlock in two different ways: Abort all deadlocked processes: This method clearly will break the deadlock cycle. But, these processes may have computed for a long time, and the results of these partial computations must be discarded and probably recomputed later. Abort one process at a time until the deadlock cycle is eliminated: This

method incurs considerable overhead, since, after each process is aborted, a deadlock detection algorithm must be invoked to determine whether any processes are still deadlocked. Aborting a process may not be easy. If the process was in the midst of updating a file, terminating it will leave that file in an incorrect state. Similarly, if the process was in the midst of printing data on the printer, the system must reset the printer to a correct state before printing the next job. Many factors may determine which process is chosen to abort: Priority of the process. How long process has computed, and how much longer to completion. How many and what type of resources the process has used. How many more resources process needs to complete. How many processes will need to be terminated? Is process interactive or batch? Resource Preemption To eliminate deadlocks using resource preemption, we successively preempt some resources from processes and give these resources to other processes until the deadlock cycle is broken. Following issues have to be considered: Selecting a victim: Which resources and which processes are to be preempted? We must determine the order of pre-emption to minimize cost. Cost factors may include parameters like the number of resources a deadlock process is holding, and the amount of time a deadlocked process has thus far consumed during its execution. Rollback: If we preempt a resource from a process, it cannot continue its normal execution and hence we must roll back the process as far as necessary to break the deadlock. This method requires the system to keep more information about the state of all the running processes. Starvation: In a system where victim selection is based primarily on cost factors, it may happen that the same process is always picked as a victim. As a result, this process never completes its designated task, a starvation situation that needs to be dealt with in any practical system. Clearly, we must ensure that a process can be picked as a victim only a (small) finite number of times.

Ans-7 Levels of threads Processes have two characteristics: Resource Ownership: On regular intervals, a process will be allocated the control or ownership of resources like main memory, I/O devices, files etc. The OS performs a protection function to prevent unwanted interference between processes with respect to resources. Scheduling/Execution: The execution of a process follows an execution path through one or more programs. Then, OS will dispatch the process after completion. To distinguish the two characteristics, the unit of dispatching is usually referred to as a thread or lightweight process. The unit of resource ownership is referred as process or task Multithreading The ability of OS to support multiple, concurrent paths of execution within a single process is called as multithreading. The traditional approach of a single thread of execution per process, in which the concept of a thread is not recognized, is referred to as a single- threaded approach. MS-DOS is an example of OS, which supports single process and single thread. Some versions of UNIX support multiple processes, but single thread per process. Java runtime environment supports multiple threads per single process.

In a multithreaded environment, a process is defined as the unit of resource allocation and a unit of protection. Every process is associated with A virtual address space that holds the process image Protected access to processors, other processes, files and I/O resources Within a process, there may be one or more threads, each with the following: An execution state (running, ready, etc.) Saved thread context when not running an execution stack Some per-thread static storage for local variables Access to the memory and resources of its process (all threads of a process share this) A single threaded process means there is no thread. In this model, the process includes its control block, user address space and user/kernel stacks. In multithreaded model, there will be a separate control block for each thread. And, all threads of one process share the state and resources of that process.

The benefits of threads are: Thread takes less time to create compared to a process, it takes less time to terminate compared to a process Switching between two threads takes less time than switching processes Threads can communicate with each other without invoking the kernel Thus, if any application has to be implemented as a set of related units of execution, it is better to have them as a collection of threads rather than collection of processes. The usage of threads in a single-user multiprocessing system are listed below Foreground and background work: For example, in a spread sheet program, one thread may display menus and read user input; whereas another thread may enter user commands and update the spreadsheet. Asynchronous Processing: A thread may be created to save the word document in a periodic interval where as other thread may be writing the data into the document. Speed of Execution: A multithreaded process can compute one batch of data while reading the next batch from a device. Modular program structure: Programs that involve a variety of activities like input and output will be easier to design and implement using threads.

Thread Functionality Similar to processes, threads also can have execution states and they may synchronize with one another. Thread States: The key states of threads are Running, Ready and Blocked. But, since all the threads share the same address space of the process, they will be swapped out when a process is swapped out. Hence, suspending a single thread makes no sense. There are four basic thread operations associated with a change in thread state: Spawn: When a new process is spawned, a thread for that process is also spawned. Also, a thread within a process may spawn another thread within the same process. Block: When thread needs to wait for an event, it will be blocked. Unblock: When an event for which a thread was blocked occurs, the thread is unblocked and moved into ready queue. Finish: When a thread completes, its registers and stacks are deallocated. Thread Synchronization: All the threads of a process share the same address space and other resources like files. So, any alteration of a resource by one thread affects the behavior of other threads in the same process. Hence, it is necessary to synchronize the activities of the various threads so that they do not interfere with each other. User level and Kernel level Threads A thread can be implemented as either a user level thread (ULT) or kernel level thread (KLT). The KLT is also known as kernel supported threads or lightweight processes. User level Threads: In ULT, all work of thread management is done by the application and the kernel is not aware of the existence of threads. Any application can be programmed to be multithreaded by using a threads library, which a package of routines for ULT management. Usually, an application begins with a single thread and begins running in that thread. This application and its thread are allocated to a single process managed by the kernel. The application may spawn a new thread within the same process during its execution. But, kernel is not aware of this activity. The advantages of ULT compared to KLT are given below:

Thread switching doesn t require kernel mode privileges. Hence, the overhead of two switches (user to kernel and kernel back to user) is saved. Scheduling can be application specific. So, OS scheduling need not be disturbed. ULTs can run on any OS. So, no change in kernel design is required to support ULTs. There are certain disadvantages of ULTs compared to KLTs: Usually, in OS many system calls are blocking. So, when a ULT executes a system call, all the threads within the process are blocked. In a pure ULT, a multithreaded application cannot take advantage of multiprocessing. Kernel level Threads: In pure KLT model, all work of thread management is done by the kernel. Thread management code will not be in the application level. The kernel maintains context information for the process as a whole and for individual threads within the process. So, there are certain advantages of KLT: The kernel can simultaneously schedule multiple threads from the same process on multiple processors. If one thread in a process is blocked, the kernel can schedule another thread of the same process. Kernel routines themselves can be multithreaded. But, there is a disadvantage as well: The transfer of control from one thread to

another within the same process requires a mode switch to the kernel. Ans-8 Banker s Algo The resource-allocation graph algorithm is not applicable when there are multiple instances for each resource. The banker's algorithm addresses this situation, but it is less efficient. The name was chosen because this algorithm could be used in a banking system to ensure that the bank never allocates its available cash such that it can no longer satisfy the needs of all its customers. When a new process enters the system, it must declare the maximum number of instances of each resource type that it may need. This number may not exceed the total number of resources in the system. When a user requests a set of resources, the system must determine whether the allocation of these resources will leave the system in a safe state. If it will, the resources are allocated; otherwise, the process must wait until some other process releases enough resources. Data structure for Banker s algorithms is as below Let n be the number of processes in the system and m be the number of resource types. Available: Vector of length m indicating number of available resources. If Available[j] = k, there are k instances of resource type Rj available. Max: An n x m matrix defines the maximum demand of each process. If Max [i,j] = k, then process Pi may request at most k instances of resource type Rj. Allocation: An n x m matrix defines the number of resources currently allocated to each process. If Allocation[i, j] = k then Pi is currently allocated k instances of Rj. Need: An n x m matrix indicates remaining resource need of each process. If Need[i,j] = k, then Pi may need k more instances of Rj to complete its task. Note that, Need [i,j] = Max[i,j] Allocation [i,j]. The Banker s algorithm has two parts: 1. Safety Algorithm: It is for finding out whether a system is in safe state or not. The steps are as given below 1. Let Work and Finish be vectors of length m and n, respectively. Initialize:

Work = Available Finish [i] = false for i = 1, 2, 3,, n. 2. Find an i such that both: (a) Finish [i] = false (b) Needi Work If no such i exists, go to step 4. 3. Work = Work + Allocationi Finish[i] = true go to step 2. 4. If Finish [i] == true for all i, then the system is in a safe state. 2. Resource Request Algorithm: Let Requesti be the request vector for process Pi. If Requesti [j] = k then process Pi wants k instances of resource type Rj. 1. If Requesti Needi go to step 2. Otherwise, raise error condition, since process has exceeded its maximum claim. 2. If Requesti Available, go to step 3. Otherwise Pi must wait, since resources are not available. 3. Pretend to allocate requested resources to Pi by modifying the state as follows: Available = Available - Requesti; Allocationi = Allocationi + Requesti; Needi = Needi Requesti; If the resulting resource allocation is safe, then the transaction is complete and the process Pi is allocated its resources. If the new state is unsafe, then Pi must wait for Requesti, and the old resource-allocation state is restored. Example for Banker s algorithm: Consider 5 processes P0 through P4 and 3 resources A (10 instances), B (5 instances), and C (7 instances).

The matrix Need = Max Allocation. Need Matrix New State We can apply Safety algorithm to check whether the system is safe. We can find that the sequence <P1, P3, P4, P2, P0> is one of the safety sequences. Suppose, now the process P1 makes a request (1, 0, 2). To check whether this request can be immediately granted, we can apply Resource-Request algorithm. Now, by checking using safety algorithm, we see that the sequence <P1, P3, P4, P0, P2> is in safe state. Hence, this request can be granted.