1 Week 8 Locking, Linked Lists, Scheduling Algorithms Classes COP4610 / CGS5765 Florida State University.

Slides:



Advertisements
Similar presentations
Operating Systems Semaphores II
Advertisements

Ch 7 B.
Concurrency Important and difficult (Ada slides copied from Ed Schonberg)
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
Chapter 6: Process Synchronization
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 6: Process Synchronization.
Memory management.
Chapter 101 Cleaning Policy When should a modified page be written out to disk?  Demand cleaning write page out only when its frame has been selected.
Scalable Synchronous Queues By William N. Scherer III, Doug Lea, and Michael L. Scott Presented by Ran Isenberg.
Operating Systems CMPSC 473 Mutual Exclusion Lecture 13: October 12, 2010 Instructor: Bhuvan Urgaonkar.
CS444/CS544 Operating Systems Synchronization 2/16/2006 Prof. Searleman
Avishai Wool lecture Introduction to Systems Programming Lecture 4 Inter-Process / Inter-Thread Communication.
5.6 Semaphores Semaphores –Software construct that can be used to enforce mutual exclusion –Contains a protected variable Can be accessed only via wait.
Chapter 6: Process Synchronization. 6.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 8, 2005 Objectives Understand.
Semaphores. Announcements No CS 415 Section this Friday Tom Roeder will hold office hours Homework 2 is due today.
CMPT 300: Operating Systems Review THIS REIVEW SHOULD NOT BE USED AS PREDICTORS OF THE ACTUAL QUESTIONS APPEARING ON THE FINAL EXAM.
Inter Process Communication:  It is an essential aspect of process management. By allowing processes to communicate with each other: 1.We can synchronize.
Synchronization Principles. Race Conditions Race Conditions: An Example spooler directory out in 4 7 somefile.txt list.c scores.txt Process.
CPS110: Implementing threads/locks on a uni-processor Landon Cox.
A. Frank - P. Weisberg Operating Systems Introduction to Cooperating Processes.
Data Structures in the Kernel Sarah Diesburg COP 5641.
10/04/2011CS4961 CS4961 Parallel Programming Lecture 12: Advanced Synchronization (Pthreads) Mary Hall October 4, 2011.
Monitor  Giving credit where it is due:  The lecture notes are borrowed from Dr. I-Ling Yen at University of Texas at Dallas  I have modified them and.
Pthread (continue) General pthread program structure –Encapsulate parallel parts (can be almost the whole program) in functions. –Use function arguments.
Data Types in the Kernel Ted Baker  Andy Wang CIS 4930 / COP 5641.
Operating Systems CMPSC 473 Mutual Exclusion Lecture 14: October 14, 2010 Instructor: Bhuvan Urgaonkar.
Midterm 1 – Wednesday, June 4  Chapters 1-3: understand material as it relates to concepts covered  Chapter 4 - Processes: 4.1 Process Concept 4.2 Process.
Cpr E 308 Spring 2004 Real-time Scheduling Provide time guarantees Upper bound on response times –Programmer’s job! –Every level of the system Soft versus.
Project 2 kthreads, concurrency, shuttle. Highlevel overview User space –program wants to control the shuttle simulation by sending requests. –start_shuttle()
IT 325 Operating systems Chapter6.  Threads can greatly simplify writing elegant and efficient programs.  However, there are problems when multiple.
Discussion Week 2 TA: Kyle Dewey. Overview Concurrency Process level Thread level MIPS - switch.s Project #1.
Week 3 January 22, 2004 Adrienne Noble. Today CVS – a great tool to use with your groups Threads – basic thread operations Intro to synchronization Hand.
Operating Systems CMPSC 473 Mutual Exclusion Lecture 11: October 5, 2010 Instructor: Bhuvan Urgaonkar.
CS399 New Beginnings Jonathan Walpole. 2 Concurrent Programming & Synchronization Primitives.
1 Condition Variables CS 241 Prof. Brighten Godfrey March 16, 2012 University of Illinois.
U NIVERSITY OF M ASSACHUSETTS A MHERST Department of Computer Science Computer Systems Principles Synchronization Emery Berger and Mark Corner University.
1 Classes II Chapter 7 2 Introduction Continued study of –classes –data abstraction Prepare for operator overloading in next chapter Work with strings.
Chapter 5 Linked List by Before you learn Linked List 3 rd level of Data Structures Intermediate Level of Understanding for C++ Please.
1 Previous Lecture Overview  semaphores provide the first high-level synchronization abstraction that is possible to implement efficiently in OS. This.
CSCI1600: Embedded and Real Time Software Lecture 17: Concurrent Programming Steven Reiss, Fall 2015.
CSC 660: Advanced Operating SystemsSlide #1 CSC 660: Advanced OS Synchronization.
1 Critical Section Problem CIS 450 Winter 2003 Professor Jinhua Guo.
Mutual Exclusion -- Addendum. Mutual Exclusion in Critical Sections.
pThread synchronization
6.1 Silberschatz, Galvin and Gagne ©2005 Operating System Principles 6.5 Semaphore Less complicated than the hardware-based solutions Semaphore S – integer.
Lectures linked lists Chapter 6 of textbook
Background on the need for Synchronization
Processes and Threads Processes and their scheduling
January 29, 2004 Adrienne Noble
PThreads.
Section 10: Last section! Final review.
Kthreads, Mutexes, and Debugging
Prof. Neary Adapted from slides by Dr. Katherine Gibson
COP 4600 Operating Systems Spring 2011
Review and Q/A.
COP 4600 Operating Systems Fall 2010
Semaphore Originally called P() and V() wait (S) { while S <= 0
CSCI1600: Embedded and Real Time Software
Kernel Synchronization II
CSE 153 Design of Operating Systems Winter 19
CSE 153 Design of Operating Systems Winter 2019
CS333 Intro to Operating Systems
CSCI1600: Embedded and Real Time Software
Lecture 20: Synchronization
CSE 451 Section 1/27/2000.
Kthreads, Mutexes, and Debugging
CSE 153 Design of Operating Systems Winter 2019
EECE.4810/EECE.5730 Operating Systems
EECE.4810/EECE.5730 Operating Systems
CS444/544 Operating Systems II Scheduler
Presentation transcript:

1 Week 8 Locking, Linked Lists, Scheduling Algorithms Classes COP4610 / CGS5765 Florida State University

Concurrency Aspects of Project 2 Synchronizing access to request queue(s)  Multiple producers may access request queue(s) at the same time  Multiple consumers may access request queue(s) at the same time Synchronizing access to other global data

Elevator Concurrency Passengers may appear on a floor at the same time as an elevator arrives at a floor The procfs display may be read at the same time that you're updating  Number of passengers that you've serviced  Total number of passengers on a given floor  Other stuff, depending on your implementation How do you guarantee correctness?

Global Data vs. Local Data Global data is declared at global scope, e.g. outside of any function body  Often necessary for kernel programming Particularly sensitive to concurrency issues  Be extra careful when handling globals

Global Data vs. Local Data Local data is declared within a function Local data is sensitive to concurrency issues when it depends on global data or when parallel access is possible  Think carefully about whether it needs to be synchronized 5

Synchronization Primitives Semaphores  User space  Kernel space Mutexes  User space  Kernel space Spin locks  Kernel space Atomic Functions

Synchronization Primitives (We'll Only Cover These) Mutexes  User space  Kernel space Does anyone remember the differences between a mutex and semaphore?

The Mutex Caught up in the mutex? 8

Mutexes Mutex – A construct to provide MUTual EXclusion Based on the concept of a semaphore Found at /include/linux/mutex.h Can be locked or unlocked  Only one thread of execution may hold the lock at a time

mutex_init(&mutex) Declare and initialize a mutex  Only initialize it once Kernel-Space Mutex - Initialization

Kernel-Space Mutex - Locking void mutex_lock(struct mutex *); int mutex_lock_interruptible(struct mutex *); mutex_lock() can wait indefinitely mutex_lock_interruptible() locks a mutex as long as it is not interrupted  returns 0 if locking succeeded, < 0 if interrupted Use of the interruptible version is typically preferred

Kernel-Space Mutex – Unlocking void mutex_unlock(struct mutex *); Guarantees that the mutex is unlocked  Why is there no interruptible version of this function? 12

Kernel-Space Mutex Example /* Declare your mutex */ struct mutex my_mutex; /* Initialize your mutex */ mutex_init(&my_mutex); /* Lock */ if(mutex_lock_interruptible(&my_mutex)) return -ERESTARTSYS; /* Do stuff to protected global variables */ /* Unlock */ mutex_unlock(&my_mutex); 13

User-Space Mutex Used with pthreads Might be useful if you are prototyping your elevator in user-space before porting to kernel 14

User-Space Mutex - Initialization int pthread_mutex_init(pthread_mutex_t *, NULL); int pthread_mutex_destroy(pthread_mutex_t *); Pthread_mutex_init() dynamically allocates a mutex Pthread_mutex_destroy() frees a mutex

User-Space Mutex - Locking int pthread_mutex_lock(pthread_mutex_t *); Returns 0 on locking, < 0 otherwise

User-Space Mutex - Unlocking int pthread_mutex_unlock(pthread_mutex_t *); Returns 0 on unlocking, < 0 otherwise

Kernel Linked Lists More elegant than arrays, but takes some getting used to… 18

Kernel Linked Lists Linux kernel provides generic doubly- and singly-linked list implementations for use in kernel code  Take advantage of it! Likely to prove useful for implementing queue processing system in project 2 Found in /include/linux/list.h

Kernel Linked Lists Pros  Safer and saves time over implementing them yourself  Handy functions already defined for your use  Can dynamically represent a FIFO Cons  Pointers can be a bit tricky

struct list_head struct list_head{ struct list_head *next, *prev; }; A kernel linked list consists of only a next and prev pointer to a list_head structure. Start with an empty list_head Next connect to other list_heads embedded into your structures

struct list_head 22 *Picture taken from Linux Device Drivers, 3 ed.

Initialize a list_head /* Declare the start of the list*/ struct list_head todo_list; /* Initialize the list to empty */ INIT_LIST_HEAD(&todo_list); Declares and initializes an empty linked list called todo_list Note the INIT_LIST_HEAD function takes a pointer 23

Embedding a list_head into your own structs struct tasks1{ struct list_head list; int task_id; void *task_data; }; We can define a struct that holds more valuable information with an empty list_head struct inside How do we add this struct to the main list? 24

/* Declare a struct * with an embedded list_head */ struct tasks1 *my_task; /* Kmalloc and fill in my_task with data you care about here… */ /* Add the my_task struct to the last element in the list using list_add_tail() */ list_add_tail(&my_task->list, &todo_list); List_add_tail() can be used to implement a FIFO Adding an element to the list 25

Other Linked List Functions Deleting items from the list  list_del(struct list_head *entry);  list_del_init(struct list_head *entry); Go from list_head to surrounding struct  list_entry(struct list_head *ptr, type_of_struct, field_name); 26

Other Linked List Functions Iterate through a linked list  list_for_each(struct list_head *cursor, struct list_head *list) For full definitions and examples, check out page 295 at

Elevator Scheduling 28

General Advise Just make elevator work first  Use a very simple algorithm Optimize if there is time 29

FIFO Method:  Service requests in order they arrive Pros:  + No computational time expended to choose requests  + Implementation: As easy as it gets  + Fair: Every requests gets a turn Cons:  - Terrible for random requests! Elevator may backtrack back and forth several times in processing requests  - Low throughput potential

Shortest Seek Time First Method:  Service requests near elevator first Pros:  + Very low computational time expended  + Implementation: Fairly easy  + Throughput: Fairly high – may minimize seek time Cons:  - Unfair: May starve distant requests  - May ignore distant clusters of requests

SCAN Method:  Service requests in one direction, then go backwards Pros:  + Very low computational time expended  + Implementation: Fairly easy (go up, go down, go up)  + Throughput: somewhat high  + Fair: No starvation Cons:  - May take up to two elevator trips to collect a set of requests (up, down)

LOOK Method:  Improvement on SCAN – same method (almost)  Uses information of request locations to determine where to stop going in a certain direction. Pros:  + Low computational time expended  + Implementation: Moderate (set upper bound, go up, set lower bound, go down)  + Throughput: somewhat high  + Fair: No starvation Cons:  - May miss a new request at outer boundary just as direction change occurs

Hybrid Combine methods, come up with something new Up to your creativity 34

Project Demos and Deliverables 35

Basic Information Project 2 is due on October 26 th  Due at demo time Please sign up for a time to demo your elevator project If you wish to use slack days, make an appointment with me on the day you wish to turn in your project 36

Project Deliverables Before demo, please compress and send me the following  README  Project report  Part 1 – source and Makefile  Part 2 – source and Makefile  Part 3 – source and Makefile Just send me files you have added (for example, you don’t need to send me the syscall_table_32.S file) 37

Demo Will only have time to demo Part 3 – elevator Please look at grading sheet to understand what I will be looking for 38

Getting Help I will be holding extra help sessions again next week in LOV 16  Tuesday: 5:15pm-6:30pm  Thursday: 2:00pm-3:15pm Regular office hours  Alejandro -- M W 9:00am-10:00am and by appointment  Sarah – W 12:30pm-1:30pm, F 3:30pm-4:30pm and by appointment 39

Next Friday We are ahead in recitation lectures, so next recitation will be my office hours  Replacing the 3:30pm-4:30pm hours on October 22nd 40

Test Elevator Driver Test elevator driver will be posted before the end of the weekend  Will randomly test system calls Make sure system calls are registered to the following numbers in syscall_table_32.S:  start_elevator337  issue_request338  stop_elevator339 41

Any Questions? 42