SlideShare a Scribd company logo
© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Synchronization
2© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What to Expect?
Thread Synchronization Mechanisms
Mutex
Conditional Variables
Read/Write Locks
Spin Locks
Barriers
Semaphores
Priority Inversion & its Solutions
Understanding a Deadlock
Inter Thread Communication
3© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Recall
Thread Management
Creation, Termination, Joining, Cleanup
Thread-specific Data
What about the other data?
Shared: By virtue of existence
Communication: Inherent
No ITC mechanisms required
Where is the catch?
Concurrency Issues & Race Conditions
4© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Solutions to Race Conditions
Concurrency issues exist within a process
Do not need kernel resources to solve them
Just some internal synchronization & access protection
mechanisms
Implemented at pthreads library level
Mutex → Critical Sections
Condition Variables → Atomic Checks & Actions
Read/Write Locks → Readers & Writers Resources
Spin Locks → Critical Sections but without yielding
Barriers → Serializing Execution
Sempahores → Resource Usage
5© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Mutual Exclusion
Type: pthread_mutex_t
APIs
int pthread_mutex_init(&mutex, &attr);
int pthread_mutex_destroy(&mutex);
int pthread_mutex_lock(&mutex);
int pthread_mutex_unlock(&mutex);
int pthread_mutex_trylock(&mutex);
Macro
PTHREAD_MUTEX_INITIALIZER
6© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Priority Inversion
Mutex
Task H
Task M
Task L
Priority Inversion
Time
7© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Priority Inheritance
Mutex
Priority H
Priority L
Time
Priority M
8© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Mutual Exclusion Attributes
Type: pthread_mutexattr_t
APIs
pthread_mutexattr_init(&attr);
pthread_mutexattr_destroy(&attr);
pthread_mutexattr_settype(&attr, type);
PTHREAD_MUTEX_RECURSIVE / NORMAL / ERRORCHECK
pthread_mutexattr_setpshared(&attr, pshared);
PTHREAD_PROCESS_SHARED / PRIVATE
pthread_mutexattr_setprotocol(&attr, protocol); (Only for RT)
PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT,
PTHREAD_PRIO_PROTECT
pthread_mutexattr_setprioceiling(&attr, proioceiling); (Only for RT)
Try out: thread_mutex_attr.c, thread_mutex_error.c
9© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Deadlock
Set of entities waiting for each other
Four necessary & sufficient conditions
Mutual Exclusion
Hold & Wait
Non-Preemptive
Circular Wait
Have a look @ thread_deadlock.c
10© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Dealing with Deadlock
The Ostrich Approach
Deadlock Detection & Recovery
Deadlock Algorithm: Current Resource Availability →
Possible Allocation Sequences
Iterative Recovery Algorithm: O(n2)
Deadlock Avoidance
Banker's Algorithm
Deadlock Prevention
Eliminate one of the four conditions
11© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Condition Variables
Type: pthread_cond_t
APIs
int pthread_cond_init(&cond, &attr);
int pthread_cond_destroy(&cond);
int pthread_cond_wait(&cond, &mutex);
int pthread_cond_signal(&cond);
int pthread_cond_broadcast(&cond);
Macro
PTHREAD_COND_INITIALIZER
12© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Condition Variable Attributes
Type: pthread_condattr_t
APIs
pthread_condattr_init(&attr);
pthread_condattr_destroy(&attr);
pthread_condattr_setpshared(&attr, pshared);
PTHREAD_PROCESS_SHARED / PRIVATE
Try out: thread_cond.c
13© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Read / Write Locks
Type: pthread_rwlock_t
APIs
int pthread_rwlock_init(&rwlock, &attr);
int pthread_rwlock_destroy(&rwlock);
int pthread_rwlock_rdlock(&rwlock);
int pthread_rwlock_tryrdlock(&rwlock);
int pthread_rwlock_wrlock(&rwlock);
int pthread_rwlock_trywrlock(&rwlock);
int pthread_rwlock_unlock(&rwlock);
Macro
PTHREAD_RWLOCK_INITIALIZER
14© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Read / Write Lock Attributes
Type: pthread_rwlockattr_t
APIs
pthread_rwlockattr_init(&attr);
pthread_rwlockattr_destroy(&attr);
pthread_rwlockattr_setpshared(&attr, pshared);
PTHREAD_PROCESS_SHARED / PRIVATE
pthread_rwlockattr_setkind_np(&attr, kind);
PTHREAD_RWLOCK_PREFER_READER_NP /
WRITER_NP / WRITER_NONRECURSIVE_NP
Try out: thread_rwlock.c
15© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Spin Locks
Type: pthread_spinlock_t
APIs
int pthread_spin_init(&spin, pshared);
int pthread_spin_destroy(&spin);
int pthread_spin_lock(&spin);
int pthread_spin_trylock(&spin);
int pthread_spin_unlock(&spin);
Try out: thread_spinlock.c
16© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Barriers & its Attributes
Type: pthread_barrier_t
APIs
int pthread_barrier_init(&barrier, &attr, cnt);
int pthread_barrier_destroy(&barrier);
int pthread_barrier_wait(&barrier);
Attribute Type: pthread_barrierattr_t
Attribute APIs
pthread_barrierattr_init(&attr);
pthread_barrierattr_destroy(&attr);
pthread_barrierattr_setpshared(&attr, pshared);
PTHREAD_PROCESS_SHARED / PRIVATE
Try out: thread_barrier.c
17© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Semaphores
Type: sem_t
APIs
int sem_init(sem_t *sem, int pshared, unsigned int
value);
int sem_destroy(sem_t *sem);
int sem_post(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
Try out: thread_sem.c
18© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Exchange Offer
Thread synchronizing mechanisms
Can be used for same ancestor processes
by setting there pshared attribute to non-zero
Example: Semaphores for Processes
Similarly, IPC mechanisms
Can be used by threads as well
Let's see some examples
19© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Inter Thread Communication
Signals in Threads
Pipe for Threads
Memory Map Sharing for Threads
Examples
thread_kill.c
thread_ipc.c
thread_ipc2.c
20© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What all have we learnt?
Thread Synchronization Mechanisms
Mutex
Conditional Variables
Read/Write Locks
Spin Locks
Barriers
Semaphores
Priority Inversion & its Solutions
Understanding a Deadlock
Inter Thread Communication
21© 2010-17 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Any Queries?

More Related Content

What's hot

Linux File System
Linux File SystemLinux File System
Linux File System
Anil Kumar Pugalia
 
System Calls
System CallsSystem Calls
System Calls
Anil Kumar Pugalia
 
Signals
SignalsSignals
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux DriversMobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
Anil Kumar Pugalia
 
Kernel Programming
Kernel ProgrammingKernel Programming
Kernel Programming
Anil Kumar Pugalia
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
Anil Kumar Pugalia
 
Introduction to Linux Drivers
Introduction to Linux DriversIntroduction to Linux Drivers
Introduction to Linux Drivers
Anil Kumar Pugalia
 
Timers
TimersTimers
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
Anil Kumar Pugalia
 
Architecture Porting
Architecture PortingArchitecture Porting
Architecture Porting
Anil Kumar Pugalia
 
Processes
ProcessesProcesses
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
Anil Kumar Pugalia
 
Video Drivers
Video DriversVideo Drivers
Video Drivers
Anil Kumar Pugalia
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
 
Toolchain
ToolchainToolchain
PCI Drivers
PCI DriversPCI Drivers
PCI Drivers
Anil Kumar Pugalia
 
I2C Drivers
I2C DriversI2C Drivers
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
 

What's hot (20)

Linux File System
Linux File SystemLinux File System
Linux File System
 
System Calls
System CallsSystem Calls
System Calls
 
Signals
SignalsSignals
Signals
 
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux DriversMobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 
Kernel Programming
Kernel ProgrammingKernel Programming
Kernel Programming
 
Linux Kernel Overview
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel Overview
 
Introduction to Linux Drivers
Introduction to Linux DriversIntroduction to Linux Drivers
Introduction to Linux Drivers
 
Timers
TimersTimers
Timers
 
Introduction to Linux
Introduction to LinuxIntroduction to Linux
Introduction to Linux
 
Architecture Porting
Architecture PortingArchitecture Porting
Architecture Porting
 
Processes
ProcessesProcesses
Processes
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
 
Video Drivers
Video DriversVideo Drivers
Video Drivers
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 
Toolchain
ToolchainToolchain
Toolchain
 
PCI Drivers
PCI DriversPCI Drivers
PCI Drivers
 
I2C Drivers
I2C DriversI2C Drivers
I2C Drivers
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 

Viewers also liked

Embedded C
Embedded CEmbedded C
Embedded C
Anil Kumar Pugalia
 
Network Drivers
Network DriversNetwork Drivers
Network Drivers
Anil Kumar Pugalia
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
Anil Kumar Pugalia
 
References
ReferencesReferences
References
Anil Kumar Pugalia
 
Interrupts
InterruptsInterrupts
Interrupts
Anil Kumar Pugalia
 
Bootloaders
BootloadersBootloaders
Bootloaders
Anil Kumar Pugalia
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
Anil Kumar Pugalia
 
Board Bringup
Board BringupBoard Bringup
Board Bringup
Anil Kumar Pugalia
 
Functional Programming with LISP
Functional Programming with LISPFunctional Programming with LISP
Functional Programming with LISP
Anil Kumar Pugalia
 
gcc and friends
gcc and friendsgcc and friends
gcc and friends
Anil Kumar Pugalia
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
Anil Kumar Pugalia
 
File Systems
File SystemsFile Systems
File Systems
Anil Kumar Pugalia
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
 
BeagleBoard-xM Bootloaders
BeagleBoard-xM BootloadersBeagleBoard-xM Bootloaders
BeagleBoard-xM Bootloaders
SysPlay eLearning Academy for You
 

Viewers also liked (14)

Embedded C
Embedded CEmbedded C
Embedded C
 
Network Drivers
Network DriversNetwork Drivers
Network Drivers
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
 
References
ReferencesReferences
References
 
Interrupts
InterruptsInterrupts
Interrupts
 
Bootloaders
BootloadersBootloaders
Bootloaders
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
Board Bringup
Board BringupBoard Bringup
Board Bringup
 
Functional Programming with LISP
Functional Programming with LISPFunctional Programming with LISP
Functional Programming with LISP
 
gcc and friends
gcc and friendsgcc and friends
gcc and friends
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
 
File Systems
File SystemsFile Systems
File Systems
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
BeagleBoard-xM Bootloaders
BeagleBoard-xM BootloadersBeagleBoard-xM Bootloaders
BeagleBoard-xM Bootloaders
 

Similar to Synchronization

Cs 704 d set2
Cs 704 d set2Cs 704 d set2
Cs 704 d set2
Debasis Das
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Semihalf
 
Linux scheduler
Linux schedulerLinux scheduler
Linux scheduler
Liran Ben Haim
 
Data Democratization at Nubank
 Data Democratization at Nubank Data Democratization at Nubank
Data Democratization at Nubank
Databricks
 
Interrupts
InterruptsInterrupts
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
CODE BLUE
 
A close encounter_with_real_world_and_odd_perf_issues
A close encounter_with_real_world_and_odd_perf_issuesA close encounter_with_real_world_and_odd_perf_issues
A close encounter_with_real_world_and_odd_perf_issues
Riyaj Shamsudeen
 
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Anne Nicolas
 
RTOS implementation
RTOS implementationRTOS implementation
RTOS implementation
Rajan Kumar
 
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWERMastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
FastBit Embedded Brain Academy
 
MICROCONTROLLER PROGRAMMING.pdf
MICROCONTROLLER PROGRAMMING.pdfMICROCONTROLLER PROGRAMMING.pdf
MICROCONTROLLER PROGRAMMING.pdf
KarthiA15
 
Using Machine Learning to Debug Oracle RAC Issues
Using Machine Learning to Debug Oracle RAC IssuesUsing Machine Learning to Debug Oracle RAC Issues
Using Machine Learning to Debug Oracle RAC Issues
Anil Nair
 
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
Anne Nicolas
 
Speed Up Synchronization Locks: How and Why?
Speed Up Synchronization Locks: How and Why?Speed Up Synchronization Locks: How and Why?
Speed Up Synchronization Locks: How and Why?
psteinb
 
How to be a smart contract engineer
How to be a smart contract engineerHow to be a smart contract engineer
How to be a smart contract engineer
Oded Noam
 
Jon Schneider at SpringOne Platform 2017
Jon Schneider at SpringOne Platform 2017Jon Schneider at SpringOne Platform 2017
Jon Schneider at SpringOne Platform 2017
VMware Tanzu
 
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defenseDEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
Felipe Prado
 
Writing more complex models (continued)
Writing more complex models (continued)Writing more complex models (continued)
Writing more complex models (continued)
Mohamed Samy
 
Real Time Systems &amp; RTOS
Real Time Systems &amp; RTOSReal Time Systems &amp; RTOS
Real Time Systems &amp; RTOS
Vishwa Mohan
 
Shytikov on NTLM Authentication
Shytikov on NTLM AuthenticationShytikov on NTLM Authentication
Shytikov on NTLM Authentication
shytikov
 

Similar to Synchronization (20)

Cs 704 d set2
Cs 704 d set2Cs 704 d set2
Cs 704 d set2
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Linux scheduler
Linux schedulerLinux scheduler
Linux scheduler
 
Data Democratization at Nubank
 Data Democratization at Nubank Data Democratization at Nubank
Data Democratization at Nubank
 
Interrupts
InterruptsInterrupts
Interrupts
 
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
[CB19] MalConfScan with Cuckoo: Automatic Malware Configuration Extraction Sy...
 
A close encounter_with_real_world_and_odd_perf_issues
A close encounter_with_real_world_and_odd_perf_issuesA close encounter_with_real_world_and_odd_perf_issues
A close encounter_with_real_world_and_odd_perf_issues
 
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
Embedded Recipes 2019 - RT is about to make it to mainline. Now what?
 
RTOS implementation
RTOS implementationRTOS implementation
RTOS implementation
 
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWERMastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
Mastering Microcontroller : TIMERS, PWM, CAN, RTC,LOW POWER
 
MICROCONTROLLER PROGRAMMING.pdf
MICROCONTROLLER PROGRAMMING.pdfMICROCONTROLLER PROGRAMMING.pdf
MICROCONTROLLER PROGRAMMING.pdf
 
Using Machine Learning to Debug Oracle RAC Issues
Using Machine Learning to Debug Oracle RAC IssuesUsing Machine Learning to Debug Oracle RAC Issues
Using Machine Learning to Debug Oracle RAC Issues
 
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
Kernel Recipes 2018 - Mitigating Spectre and Meltdown (and L1TF) - David Wood...
 
Speed Up Synchronization Locks: How and Why?
Speed Up Synchronization Locks: How and Why?Speed Up Synchronization Locks: How and Why?
Speed Up Synchronization Locks: How and Why?
 
How to be a smart contract engineer
How to be a smart contract engineerHow to be a smart contract engineer
How to be a smart contract engineer
 
Jon Schneider at SpringOne Platform 2017
Jon Schneider at SpringOne Platform 2017Jon Schneider at SpringOne Platform 2017
Jon Schneider at SpringOne Platform 2017
 
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defenseDEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
DEF CON 23 - Sean - metcalf - red vs blue ad attack and defense
 
Writing more complex models (continued)
Writing more complex models (continued)Writing more complex models (continued)
Writing more complex models (continued)
 
Real Time Systems &amp; RTOS
Real Time Systems &amp; RTOSReal Time Systems &amp; RTOS
Real Time Systems &amp; RTOS
 
Shytikov on NTLM Authentication
Shytikov on NTLM AuthenticationShytikov on NTLM Authentication
Shytikov on NTLM Authentication
 

More from Anil Kumar Pugalia

File System Modules
File System ModulesFile System Modules
File System Modules
Anil Kumar Pugalia
 
Processes
ProcessesProcesses
System Calls
System CallsSystem Calls
System Calls
Anil Kumar Pugalia
 
Playing with R L C Circuits
Playing with R L C CircuitsPlaying with R L C Circuits
Playing with R L C Circuits
Anil Kumar Pugalia
 
Audio Drivers
Audio DriversAudio Drivers
Audio Drivers
Anil Kumar Pugalia
 
Power of vi
Power of viPower of vi
Power of vi
Anil Kumar Pugalia
 
"make" system
"make" system"make" system
"make" system
Anil Kumar Pugalia
 
Hardware Design for Software Hackers
Hardware Design for Software HackersHardware Design for Software Hackers
Hardware Design for Software Hackers
Anil Kumar Pugalia
 
RPM Building
RPM BuildingRPM Building
RPM Building
Anil Kumar Pugalia
 

More from Anil Kumar Pugalia (9)

File System Modules
File System ModulesFile System Modules
File System Modules
 
Processes
ProcessesProcesses
Processes
 
System Calls
System CallsSystem Calls
System Calls
 
Playing with R L C Circuits
Playing with R L C CircuitsPlaying with R L C Circuits
Playing with R L C Circuits
 
Audio Drivers
Audio DriversAudio Drivers
Audio Drivers
 
Power of vi
Power of viPower of vi
Power of vi
 
"make" system
"make" system"make" system
"make" system
 
Hardware Design for Software Hackers
Hardware Design for Software HackersHardware Design for Software Hackers
Hardware Design for Software Hackers
 
RPM Building
RPM BuildingRPM Building
RPM Building
 

Recently uploaded

Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 

Recently uploaded (20)

Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 

Synchronization

  • 1. © 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Synchronization
  • 2. 2© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? Thread Synchronization Mechanisms Mutex Conditional Variables Read/Write Locks Spin Locks Barriers Semaphores Priority Inversion & its Solutions Understanding a Deadlock Inter Thread Communication
  • 3. 3© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Recall Thread Management Creation, Termination, Joining, Cleanup Thread-specific Data What about the other data? Shared: By virtue of existence Communication: Inherent No ITC mechanisms required Where is the catch? Concurrency Issues & Race Conditions
  • 4. 4© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Solutions to Race Conditions Concurrency issues exist within a process Do not need kernel resources to solve them Just some internal synchronization & access protection mechanisms Implemented at pthreads library level Mutex → Critical Sections Condition Variables → Atomic Checks & Actions Read/Write Locks → Readers & Writers Resources Spin Locks → Critical Sections but without yielding Barriers → Serializing Execution Sempahores → Resource Usage
  • 5. 5© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Mutual Exclusion Type: pthread_mutex_t APIs int pthread_mutex_init(&mutex, &attr); int pthread_mutex_destroy(&mutex); int pthread_mutex_lock(&mutex); int pthread_mutex_unlock(&mutex); int pthread_mutex_trylock(&mutex); Macro PTHREAD_MUTEX_INITIALIZER
  • 6. 6© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Priority Inversion Mutex Task H Task M Task L Priority Inversion Time
  • 7. 7© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Priority Inheritance Mutex Priority H Priority L Time Priority M
  • 8. 8© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Mutual Exclusion Attributes Type: pthread_mutexattr_t APIs pthread_mutexattr_init(&attr); pthread_mutexattr_destroy(&attr); pthread_mutexattr_settype(&attr, type); PTHREAD_MUTEX_RECURSIVE / NORMAL / ERRORCHECK pthread_mutexattr_setpshared(&attr, pshared); PTHREAD_PROCESS_SHARED / PRIVATE pthread_mutexattr_setprotocol(&attr, protocol); (Only for RT) PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT pthread_mutexattr_setprioceiling(&attr, proioceiling); (Only for RT) Try out: thread_mutex_attr.c, thread_mutex_error.c
  • 9. 9© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Deadlock Set of entities waiting for each other Four necessary & sufficient conditions Mutual Exclusion Hold & Wait Non-Preemptive Circular Wait Have a look @ thread_deadlock.c
  • 10. 10© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Dealing with Deadlock The Ostrich Approach Deadlock Detection & Recovery Deadlock Algorithm: Current Resource Availability → Possible Allocation Sequences Iterative Recovery Algorithm: O(n2) Deadlock Avoidance Banker's Algorithm Deadlock Prevention Eliminate one of the four conditions
  • 11. 11© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Condition Variables Type: pthread_cond_t APIs int pthread_cond_init(&cond, &attr); int pthread_cond_destroy(&cond); int pthread_cond_wait(&cond, &mutex); int pthread_cond_signal(&cond); int pthread_cond_broadcast(&cond); Macro PTHREAD_COND_INITIALIZER
  • 12. 12© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Condition Variable Attributes Type: pthread_condattr_t APIs pthread_condattr_init(&attr); pthread_condattr_destroy(&attr); pthread_condattr_setpshared(&attr, pshared); PTHREAD_PROCESS_SHARED / PRIVATE Try out: thread_cond.c
  • 13. 13© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Read / Write Locks Type: pthread_rwlock_t APIs int pthread_rwlock_init(&rwlock, &attr); int pthread_rwlock_destroy(&rwlock); int pthread_rwlock_rdlock(&rwlock); int pthread_rwlock_tryrdlock(&rwlock); int pthread_rwlock_wrlock(&rwlock); int pthread_rwlock_trywrlock(&rwlock); int pthread_rwlock_unlock(&rwlock); Macro PTHREAD_RWLOCK_INITIALIZER
  • 14. 14© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Read / Write Lock Attributes Type: pthread_rwlockattr_t APIs pthread_rwlockattr_init(&attr); pthread_rwlockattr_destroy(&attr); pthread_rwlockattr_setpshared(&attr, pshared); PTHREAD_PROCESS_SHARED / PRIVATE pthread_rwlockattr_setkind_np(&attr, kind); PTHREAD_RWLOCK_PREFER_READER_NP / WRITER_NP / WRITER_NONRECURSIVE_NP Try out: thread_rwlock.c
  • 15. 15© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Spin Locks Type: pthread_spinlock_t APIs int pthread_spin_init(&spin, pshared); int pthread_spin_destroy(&spin); int pthread_spin_lock(&spin); int pthread_spin_trylock(&spin); int pthread_spin_unlock(&spin); Try out: thread_spinlock.c
  • 16. 16© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Barriers & its Attributes Type: pthread_barrier_t APIs int pthread_barrier_init(&barrier, &attr, cnt); int pthread_barrier_destroy(&barrier); int pthread_barrier_wait(&barrier); Attribute Type: pthread_barrierattr_t Attribute APIs pthread_barrierattr_init(&attr); pthread_barrierattr_destroy(&attr); pthread_barrierattr_setpshared(&attr, pshared); PTHREAD_PROCESS_SHARED / PRIVATE Try out: thread_barrier.c
  • 17. 17© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Semaphores Type: sem_t APIs int sem_init(sem_t *sem, int pshared, unsigned int value); int sem_destroy(sem_t *sem); int sem_post(sem_t *sem); int sem_wait(sem_t *sem); int sem_trywait(sem_t *sem); Try out: thread_sem.c
  • 18. 18© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Exchange Offer Thread synchronizing mechanisms Can be used for same ancestor processes by setting there pshared attribute to non-zero Example: Semaphores for Processes Similarly, IPC mechanisms Can be used by threads as well Let's see some examples
  • 19. 19© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Inter Thread Communication Signals in Threads Pipe for Threads Memory Map Sharing for Threads Examples thread_kill.c thread_ipc.c thread_ipc2.c
  • 20. 20© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What all have we learnt? Thread Synchronization Mechanisms Mutex Conditional Variables Read/Write Locks Spin Locks Barriers Semaphores Priority Inversion & its Solutions Understanding a Deadlock Inter Thread Communication
  • 21. 21© 2010-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?