Post on 07-Apr-2018
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 1/33
4/19/12 Semaphores
Click to edit Master subtitle style
Semaphores
Prepared by:Lâm Ngọc ẨnTăng Trường Tuyển
4/19/12 11Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 2/33
4/19/12 Semaphores
Contents
Definition1.
Operators2.
Typical Use3.
Implementation in T-kernel4.
4/19/12 22Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 3/33
4/19/12 Semaphores
1. Definition
v A semaphore (sometimes called asemaphore token) is a kernelobject that one or more threads of
execution can acquire or releasefor the purposes of synchronization or mutual
exclusion
4/19/12 33Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 4/33
4/19/12 Semaphores
1. Definition
4/19/12 44Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 5/33
4/19/12 Semaphores
1. Definition
v 3 groups:§ Binary Semaphores§ Counting Semaphores§ Mutual Exclusion Semaphores
4/19/12 55Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 6/33
4/19/12 Semaphores
1.1. Binary Semaphores
v Binary semaphores are treated asglobal resources
4/19/12 66Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 7/334/19/12 Semaphores
1.2. Counting Semaphores
v global resourcesv bounded count vs unbounded count
4/19/12 77Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 8/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v A mutual exclusion (mutex)semaphore is a special binarysemaphore
4/19/12 88Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 9/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Ownershipv Recursive accessv Task deletion safetyv Protocols for avoiding problems
inherent to mutual exclusion
4/19/12 99Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 10/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Owner is the first task acquiring itv Only owner can release it (contrast
with binary semaphores)
4/19/12 1010Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 11/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Recursive locking (optional): owner can acquire multiple times in thelocked state
v Avoid causing the deadlock innested attempts to acquire theresource
4/19/12 1111Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 12/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Task Deletion Safety (optional):using task deletion locks toensure that the owner task cannot
be deleted
4/19/12 1212Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 13/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Priority Inversion Avoidance:
4/19/12 1313Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 14/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Priority Inversion Avoidance:
4/19/12 1414Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 15/33
4/19/12 Semaphores
1.3. Mutual Exclusion Semaphores
v Priority Inversion Avoidance§ Common protocols:
• priority inheritance• ceiling priority
4/19/12 1515Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 16/33
4/19/12 Semaphores
2. Operator
v creating and deleting semaphoresv acquiring and releasing semaphoresv clearing a semaphore’s task-waiting
listv getting semaphore information.
4/19/12 1616Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 17/33
4/19/12 Semaphores
3. Typical Use
v
Wait-and-Signal Synchronization
4/19/12 1717Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 18/33
4/19/12 Semaphores
3. Typical Use
v
Wait-and-Signal SynchronizationtWaitTask ( ) {
:
Acquire binary semaphore token
:
}tSignalTask ( ) {
:
Release binary semaphore token
:}
4/19/12 1818Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 19/33
4/19/12 Semaphores
3. Typical Use
v
Multiple-Task Wait-and-SignalSynchronization
4/19/12 1919Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 20/33
4/19/12 Semaphores
3. Typical Use
v
Multiple-Task Wait-and-SignalSynchronization tWaitTask () {
:
Do some processing specific to task Acquire binary semaphoretoken
:
}
tSignalTask () {
:Do some processing Flush binary semaphore's task-waiting list
:
}
4/19/12 2020Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 21/33
4/19/12 Semaphores
3. Typical Use
v
Credit-Tracking Synchronization
4/19/12 2121Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 22/33
4/19/12 Semaphores
3. Typical Use
v
Credit-Tracking Synchronization tWaitTask () {
:
Acquire counting semaphore token
:}
tSignalTask () {
:
Release counting semaphore token
:}
4/19/12 2222Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 23/33
4/19/12 Semaphores
3. Typical Use
v
Single Shared-Resource-AccessSynchronization
4/19/12 2323Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 24/33
4/19/12 Semaphores
3. Typical Use
v
Single Shared-Resource-AccessSynchronizationtAccessTask () {
:
Acquire binary semaphore token Read or write to sharedresource Release binary semaphore token
:
}
4/19/12 2424Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 25/33
4/19/12 Semaphores
3. Typical Use
v
Multiple Shared-Resource-AccessSynchronization
4/19/12 2525Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 26/33
4/19/12 Semaphores
3. Typical Use
v
Multiple Shared-Resource-AccessSynchronizationtAccessTask () {
:
Acquire a counting semaphore tokenRead or Write to shared resource
Release a counting semaphore token
:
}
4/19/12 2626Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 27/33
4/19/12 Semaphores
3. Typical Use
v
Multiple Shared-Resource-AccessSynchronization
tAccessTask () {
:Acquire first mutex in non-blocking way
If not successful then acquire 2nd mutex in a blocking way
Read or Write to shared resource
Release the acquired mutex
:}
4/19/12 2727Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 28/33
4/19/12 Semaphores
3. Typical Use
v
Recursive Shared-Resource-Access Synchronization
4/19/12 2828Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 29/33
4/19/12 Semaphores
3. Typical Use
v
Recursive Shared-Resource-Access SynchronizationtAccessTask () {
Acquire mutex
Access shared resourceCall Routine A
Release mutex
}
Routine A () {
Acquire mutex Access shared resource
Call Routine B
Release mutex
}4/19/12 2929Semaphores
Routine B () {:
Acquire mutex Access shared resourceRelease mutex:
}
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 30/33
4/19/12 Semaphores
4. Implementation in T-Kernel
v
The semaphores functions:ID semid = tk_cre_sem ( T_CSEM *pk_csem );
ER ercd = tk_del_sem ( ID semid ) ;
ER ercd = tk_sig_sem ( ID semid, INT cnt ) ; ER ercd = tk_wai_sem ( ID semid, INT cnt,
TMO tmout ) ;
ER ercd = tk_ref_sem ( ID semid, T_RSEM*pk_rsem ) ;
4/29/11 30Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 31/33
4/19/12 Semaphores
4. Implementation in T-Kernel
v
The mutex functions:ID mtxid = tk_cre_mtx ( T_CMTX *pk_cmtx ) ;
ER ercd = tk_del_mtx ( ID mtxid ) ;
ER ercd = tk_loc_mtx ( ID mtxid, TMO tmout ) ;ER ercd = tk_unl_mtx ( ID mtxid ) ;
ER ercd = tk_ref_mtx ( ID mtxid, T_RMTX
*pk_rmtx ) ;
4/29/11 31Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 32/33
4/19/12 Semaphores
4. Reference
v
T-kernel Specification – T-engine Forumv Real-Time Concepts for Embedded Systems -
Qing Li with Caroline Yao
4/29/11 32Semaphores
8/4/2019 3. Semaphore TN
http://slidepdf.com/reader/full/3-semaphore-tn 33/33
4/19/12 S h
Click to edit Master subtitle style
Thank
You !
4/19/12 3333S h