Thread Scheduling and Dispatching
-
Upload
george-crismaruc -
Category
Documents
-
view
232 -
download
0
Transcript of Thread Scheduling and Dispatching
-
7/24/2019 Thread Scheduling and Dispatching
1/75
Thread Scheduling andDispatching
Maung Aung Han
Marc E. Loy
Jihua Zhong
CIS 642: Seminar in Real-ime Sy!em!
In!rucor: "ro#e!!or In!u$ Lee
-
7/24/2019 Thread Scheduling and Dispatching
2/75
Direction
Allo% an un&erlying !che&uling mechani!m o 'e u!e& 'y real-
ime Ja(a hrea&! 'u no !$eci#y in a&(ance he e)ac naure o#
all $o!!i'le !che&uling mechani!m!
Allo% im$lemenaion! o $ro(i&e unanici$ae& !che&ulingalgorihm!
"rogrammaic a!!ignmen o# $arameer! a$$ro$riae #or
un&erlying !che&uling mechani!m a! %ell a! $ro(i&ing any
nece!!ary #or creaion* managemen* an& erminaion o# hrea&!
"ro(i&e enough #le)i'iliy in hrea& !che&uling #rame%or+ oallo% #uure (er!ion! o# he !$eci#icaion o 'uil& on hi! relea!e
an& allo% he &ynamic loa&ing o# !che&uling $olicy mo&ule!
-
7/24/2019 Thread Scheduling and Dispatching
3/75
Outline
I!!ue!
,e#iniion!
A"I
Sche&uler
Sche&ula'le '/ec! 0 Real-ime 1hrea&!
"arameer!
-
7/24/2019 Thread Scheduling and Dispatching
4/75
Issues
-
7/24/2019 Thread Scheduling and Dispatching
5/75
Issues: Threads
Muli-hrea&ing i! u!e#ul o
&ecou$le &i##eren aci(iie!
Aci(e o'/ec!* reue!
ueue!* !ynch0a!ynch Ho%e(er* %or+ in &i##eren
hrea&! com$ee! #or C"3
ime an& memory re!ource!
Mu! en!ure re!ource u!age
'y non-criical aci(iie! &oe!no iner#ere %ih nee&! o#
criical aci(iie!
-
7/24/2019 Thread Scheduling and Dispatching
6/75
Issues: Release Characteristics
1o +no% %heher hrea&! %illiner#ere* nee& ocharacerie heir em$oral'eha(ior
5ee& &e!cri$or! %ih +eyem$oral ari'ue! E.g.,e)ecuion co!*
&ea&line
Can a'!rac ou !e$arae
&e!cri$or! #or canonical'eha(ioral cla!!e! I.e.,$erio&ic* a$erio&ic*
!$ora&ic
Time
execution cost
period
minimum inter-arrival spacing
deadline
-
7/24/2019 Thread Scheduling and Dispatching
7/75
Issues: Release Failures
Relea!e characeri!ic!
a&(eri!e ho% hrea&! are
projectedo 'eha(e
Ho%e(er* &i##erence!'e%een $ro/ece& an&
acual 'eha(ior can lea& o
une)$ece& #ailure!
5ee& o 'e a'le o &eec
an& i# $o!!i'le han&le7relea!e #ailure!
Co! o(errun!
,ea&line mi!!e!
Time
actual execution cost
deadline
execution finished (late
pro!ected execution cost
-
7/24/2019 Thread Scheduling and Dispatching
8/75
Issues: Scheduling
"rioriie! 5ee& !u##icien unique
$rioriy le(el!
"reem$i(e !che&uling 5ee& %ell &e#ine& an&a$$ro$riae !emanic!
8airne!! among hrea&! i!no usuallya Real-1imeconcern 8I8 (!. RR7
9u may 'e u!e#ul 8ea!i'iliy
A&mi!!ion conrol*ceri#icaion0e!ing
scheduler
blocked
runnable
executing
-
7/24/2019 Thread Scheduling and Dispatching
9/75
Issues: "riorit# Inversion "ro$lem
Con!i&er a lo% $rioriy $roce!! L an& a high$rioriy $roce!! H ha 'oh ha(e acce!! o acommon !hare& re!ource ha hey can onlyacce!! muual e)clu!i(ely
"icure a !cenario in %hich a high-$rioriyhrea& nee&! a loc+ in or&er o e)ecue* 'uhe loc+ i! 'eing hel& 'y a lo%er-$rioriy hrea&
1he lo%er-$rioriy hrea& i! $re(ening ahigher-$rioriy hrea& #rom e)ecuing
-
7/24/2019 Thread Scheduling and Dispatching
10/75
Issues: "riorit# Inversion Solution
"rioriy Inheriance "roocol
I# hrea& :aem$! o acuire a loc+ ha i! hel& 'y a lo%er-$rioriyhrea& 2* hen 2;! $rioriy i! rai!e& o ha o# :a! long a! 2hol&!he loc+
"rioriy Ceiling Emulaion "roocol Highe! loc+er $roocol7 A monior i! gi(en a $rioriy ceiling %hen i i! creae&* %hich i! he
highe! $rioriy o# any hrea& ha coul& aem$ o ener he monior
A! !oon a! a hrea& ener! !ynchronie& co&e* i! $rioriy i! rai!e&o he monior;! ceiling $rioriy* hu! en!uring muually e)clu!i(e
acce!! o he co&e !ince i %ill no 'e $reem$e& 'y any hrea& hacoul& $o!!i'ly aem$ o ener he !ame monior
I#* hrough a $rogramming error* a hrea& ha! a higher $rioriy hanhe ceiling o# he monior i i! aem$ing o ener* hen an e)ce$ioni! hro%n
-
7/24/2019 Thread Scheduling and Dispatching
11/75
Definitions
-
7/24/2019 Thread Scheduling and Dispatching
12/75
Definitions
Sche&ula'le '/ec Sche&uling !cheme analogou! o hrea&!* a!+!*
mo&ule!* an& 'loc+!
Sche&ule Seuence or or&ering o# a !e o# hrea&!
Sche&uling0Sche&uling Algorihm "ro&ucion o# a !euence or or&ering #or he e)ecuion
o# a !che&ule 8ea!i'iliy Analy!i!
,eermine! i# a !che&ule ha! an acce$a'le (alue #orhe meric
-
7/24/2019 Thread Scheduling and Dispatching
13/75
Definitions
1imely E)ecuion o# 1hrea&!
"rogrammer can &eermine 'y analy!i! o#
$rogram* e!ing $rogram on $aricularim$lemenaion!* or 'oh %heher $aricular
hrea&! %ill al%ay! com$lee e)ecuion
'e#ore a gi(en imeline!! con!rain
E)$re!!e& in relai(e or a'!olue erm!
-
7/24/2019 Thread Scheduling and Dispatching
14/75
Definitions
"rioriy
Ineger a!!ociae& %ih a hrea& ha con(ey! o
he !y!em he or&er in %hich he hrea&! !houl&e)ecue
E)ecuion Eligi'iliy
,i!$aching
"orion o# he !y!em %hich !elec! he hrea&%ih he highe! e)ecuion eligi'iliy #rom he $ool
o# hrea&! ha are rea&y o run
-
7/24/2019 Thread Scheduling and Dispatching
15/75
Threads and
Scheduling %"I
-
7/24/2019 Thread Scheduling and Dispatching
16/75
Threads and Scheduling %"I
Sche&uler
Sche&ula'le 0 Realime1hrea&
"arameer!
Sche&uling"arameer!
Relea!e"arameer!
"roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
17/75
Threads and Scheduling %"I
schedulerblocked runnable
executing
parameters
(cost& deadline& etc
parameters
(cost& deadline& etc
parameters
(cost& deadline& etc
-
7/24/2019 Thread Scheduling and Dispatching
18/75
Class 'ierarch#Thread
RealtimeThread
Scheduing"arametersRelease"arameters
emor#"arameters
"riorit#"arameters
Importance"arameters
"eriodic"arameters %periodic"arameters
Sporadic"arameters
"rocessing)roup"arameters
*o'eapRealtimeThread
-
7/24/2019 Thread Scheduling and Dispatching
19/75
Scheduler
-
7/24/2019 Thread Scheduling and Dispatching
20/75
Scheduler
A'!rac cla!! Manage! he e)ecuion o#
!che&ula'le o'/ec! 8ea!i'iliy algorihm
May &eermine i# he +no%n !eo# !che&ula'le o'/ec!* gi(enheir $aricular e)ecuionor&ering or $rioriy a!!ignmen*i! a #ea!i'le !che&ule
$ional
Su'cla!!e! o# Schedulerareu!e& #or alernae !che&uling$olicie! an& !houl& &e#ine aninstance()cla!! meho& oreurn he &e#aul in!ance o# he!u'cla!!s
cheduler
blocked
runnable
executing
-
7/24/2019 Thread Scheduling and Dispatching
21/75
"riorit#Scheduler
Cla!! ha e)en&!
Scheduler
Im$lemenaion #or $rioriy-
'a!e& !che&uling Calle& he base scheduler
,e#aul in!ance i! he
reuire& $rioriy !che&uler
8i)e& $rioriy* $reem$i(e
!che&uling %ih 2= uniue$rioriy le(el!
a$stract Scheduler
"riorit#Scheduler
-
7/24/2019 Thread Scheduling and Dispatching
22/75
Threads + Schedula$le
O$!ects
-
7/24/2019 Thread Scheduling and Dispatching
23/75
Schedula$le
Iner#ace ha e)en&!
java.lang.Runnable
'/ec! o# hi! y$e are
analogou! o threads* tasks*
modules* an& blocks
'/ec! o# hi! y$e are
manage& 'y Scheduler
1hree im$lemenaion! o#
Schedulable
RealTimeThread
NoHeapRealTimeThread
AsyncEventHandler
interface !ava,lang,Runna$le
interface Schedula$le
-
7/24/2019 Thread Scheduling and Dispatching
24/75
Schedula$le
Each o'/ec i! a!!igne& $rioriy
re!ource! accor&ing o heir relea!e
characeri!ic!* e)ecuion eligi'iliy* an&$roce!!ing grou$ (aria'le!
Schedulingarameters
Releasearameters rocessing!rouparameters
"emoryarameters
-
7/24/2019 Thread Scheduling and Dispatching
25/75
RealtimeThread
Cla!! ha e)en&!java.lang.Threadan&im$lemen! Scheduable
Inclu&e! cla!!e! an& meho&!
o ge an& !e $arameer o'/ec!menione& in Schedulable7
Mu! 'e $lace& in a memoryarea !uch ha Ja(a meho&! onjava.lang.Threadcom$leenormally e)ce$ %here !uch
e)ecuion %oul& cau!e acce!!(iolaion!
In!ance! may ha(e ane)ecuion eligi'iliy logicallylo%er han he gar'age collecor
interface Schedula$le
!ava,lang,Thread
RealtimeThread
interface Runna$le
-
7/24/2019 Thread Scheduling and Dispatching
26/75
*o'eapRealtimeThread
Cla!! ha e)en&!
RealtimeThread
In!ance! ha(e an im$lici e)ecuion
eligi'iliy logically higher han he
gar'age collecor "ro(i&e& in or&er o allo% ime-
criical hrea&! o e)ecue in
$re#erence o he gar'age collecor
Memory acce!! an& a!!ignmen
!emanic! are &e!igne& o
guaranee ha he e)ecuion &oe!
no lea& o an incon!i!en hea$!ae
5e(er allo%e& o allocae or
re#erence any o'/ec allocae& in he
hea$ nor mani$ulae he re#erence
o# any o'/ec in he hea$
interface Schedula$le
!ava,lang,Thread
RealtimeThread
*o'eapRealtimeThread
interface Runna$le
-
7/24/2019 Thread Scheduling and Dispatching
27/75
"arameters
-
7/24/2019 Thread Scheduling and Dispatching
28/75
"arameters
Sche&uling"arameer!
Relea!e"arameer!
"roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
29/75
Scheduling"arameters
A'!rac cla!!
"ro(i&e! he $arameer! u!e& in Sche&uler
Change! o he (alue! in hi! o'/ec a##ec!he !che&uling 'eha(ior o# all he
Scheduableo'/ec! o %hich i i! 'oun&
Im$lemenaion!:riorityarameters
#mportancearameters
-
7/24/2019 Thread Scheduling and Dispatching
30/75
"riorit#"arameters
Cla!! ha e)en&!
Schedulingarameters
In!ance! o# hi! cla!!
!houl& 'e a!!igne& ohrea&! ha are manage& 'y
!che&uler! %hich u!e a
!inger ineger o &eermine
e)ecuion or&er.
9a!e !che&ulerriorityScheduleri!
!uch a !che&uler
a$stract Scheduling"arameters
"riorit#"arameters
-
7/24/2019 Thread Scheduling and Dispatching
31/75
"riorit#"arameters
Cla!! ha e)en&!
Schedulingarameters
In!ance! o# hi! cla!!
!houl& 'e a!!igne& ohrea&! ha are manage& 'y
!che&uler! %hich u!e a
!inger ineger o &eermine
e)ecuion or&er.
9a!e !che&ulerriorityScheduleri!
!uch a !che&uler
scheduler
blocked
runnable
executing
.
.
/ 0
1
-
7/24/2019 Thread Scheduling and Dispatching
32/75
Importance"arameters
Cla!! ha e)en&!"rioriy"arameer!
A&&iional !che&uling
meric ha may 'e u!e&'y !ome $rioriy-'a!e&!che&uling algorihm!&uring o(erloa&con&iion! o
&i##ereniae e)ecuionor&er among hrea&! o#he !ame $rioriy
a$stract Scheduling"arameters
Importance"arameters
"riorit#"arameters
-
7/24/2019 Thread Scheduling and Dispatching
33/75
Release"arameters
A'!rac cla!!
-
7/24/2019 Thread Scheduling and Dispatching
34/75
Release"arameters
A'!rac cla!!
-
7/24/2019 Thread Scheduling and Dispatching
35/75
"eriodic"arameters
Cla!! ha e)en&!Relea!e"arameer!
In&icae! ha he$ait%orNe&teriod()
meho& in he a!!ociae&Sche&ula'le o'/ec %ill 'eun'loc+e& a he !ar o# each$erio& start: ime a %hich he #ir!
$erio& 'egin!
period: iner(al 'e%een!ucce!!i(e un'loc+!
Inheri! cost* deadline*overrunHandler* an&missHandler#rom $aren
a$stract Release"arameters
"eriodic"arameters
-
7/24/2019 Thread Scheduling and Dispatching
36/75
"eriodic"arameters
Cla!! ha e)en&!Relea!e"arameer!
In&icae! ha he$ait%orNe&teriod()
meho& in he a!!ociae&Sche&ula'le o'/ec %ill 'eun'loc+e& a he !ar o# each$erio& start: ime a %hich he #ir!
$erio& 'egin!
period: iner(al 'e%een!ucce!!i(e un'loc+!
Inheri! cost* deadline*overrunHandler* an&missHandler#rom $aren
Time
deadlinecost
period
start
-
7/24/2019 Thread Scheduling and Dispatching
37/75
%periodic"arameters
Cla!! ha e)en&!
Relea!e"arameer!
Characerie! a
!che&ula'le o'/ec ha
may 'ecome aci(e a
any ime
Inheri! cost* deadline*
overrunHandler* an&missHandler#rom
$aren
a$stract Release"arameters
%periodic"arameters
-
7/24/2019 Thread Scheduling and Dispatching
38/75
Sporadic"arameters
Cla!! ha e)en&!A$eri&ioc"arameer!
5oice o he !che&uler hahe a!!ociae& !che&ula'le
o'/ec;! run meho& %ill 'erelea!e& a$erio&ically 'u %iha minimum ime 'e%eenrelea!e! minInterarrival: relea!e ime!
o# he !che&ula'le o'/ec %ill
occur no le!! han hi!iner(al
Inheri! cost* deadline*overrunHandler* an&missHandler#rom $aren
a$stract Release"arameters
Sporatic"arameters
%periodic"arameters
-
7/24/2019 Thread Scheduling and Dispatching
39/75
Sporadic"arameters
Cla!! ha e)en&!A$eri&ioc"arameer!
5oice o he !che&uler hahe a!!ociae& !che&ula'le
o'/ec;! run meho& %ill 'erelea!e& a$erio&ically 'u %iha minimum ime 'e%eenrelea!e! minInterarrival: relea!e ime!
o# he !che&ula'le o'/ec %ill
occur no le!! han hi! iner(al Inheri! cost* deadline*
overrunHandler* an&missHandler#rom $aren
Time
deadlinecost
minInterarrival
-
7/24/2019 Thread Scheduling and Dispatching
40/75
"rocessing)roup"arameters
Cla!!
A!!ociae& %ih one or
more !che&ula'le
o'/ec! #or %hich he
!y!em guaranee! ha
he a!!ociae& o'/ec!
%ill no 'e gi(en more
ime $er $erio& hanin&icae& 'y co!
actual execution cost
pro!ected execution cost
period
-
7/24/2019 Thread Scheduling and Dispatching
41/75
"rocessing)roup"arameters
start: ime a %hich he #ir! $erio&'egin!
period: iner(al 'e%een !ucce!!i(eun'loc+! o#$ait%orNe&teriod()
cost: $roce!!ing ime $er $erio& deadline: lae! $ermi!!i'le
com$leion ime mea!ure& #rom he!ar o# he curren $erio&
overrunHandler: in(o+e& i# he run7meho& o# he !che&ula'le o'/ec o#he $re(iou! $erio& i! !ill e)ecuinga he !ar o# he curren $erio&
missHandler: in(o+e& i# he run7meho& o# he !che&ula'le o'/ec i!!ill e)ecuing a#er he &ea&line ha!$a!!e&
actual execution cost
pro!ected execution cost
-
7/24/2019 Thread Scheduling and Dispatching
42/75
2xample
-
7/24/2019 Thread Scheduling and Dispatching
43/75
Realtime Thread 2xample
$u'lic cla!! Recei(e1hrea& e)en&! Realime1hrea& >
$u'lic (oi& run7 >
0? logic #or recei(e hrea& ?0
@@
Realime1hrea& r ne% Recei(e1hrea&7B
i# r.geSche&uler7.i!8ea!a'le7hro% ne% E)ce$ionDhae(erFG7B
r.!ar7B
-
7/24/2019 Thread Scheduling and Dispatching
44/75
Realtime Thread 2xample
Realime1hrea& r2 ne% Realime1hrea&7 >
$u'lic (oi& run7 >
0? logic #or recei(e hrea& ?0
@
@
Sche&uling"arameer! !$
ne% "rioriy"arameer!"rioriySche&uler.ge5orm"rioriynull77B
Realime1hrea& 2 ne% Realime1hrea&!$7 >
$u'lic (oi& run7 >0? hrea& logic ?0
@
@
-
7/24/2019 Thread Scheduling and Dispatching
45/75
Scheduler 2xample
$u'ic !aic Sche&uler #in&Sche&ulerSring $olicy7 >
Sring cla!!5ame Sy!em.ge"ro$eryD/a(a).realime.!che&ulerG $olicy7B
Cla!! claB
ry >
i# cla!!5ame null cla Cla!!.#or5amecla!!5ame77 null7 >
reurn Sche&uler7 cla.geMeho&Din!anceG* null7.in(o+enull* null7B
@
@ cach Cla!!5o8oun&E)ce$ion no8oun&7 >
@ cach 5oSuchMeho&E)ce$ion noSuch7 >
@ cach SecuriyE)ce$ion !ecuriy7 >
@ cach IllegalAcce!!E)ce$ion acce!!7 >
@ cach IllegalArgumenE)ce$ion arg7 >@ cach In(ocaion1argeE)ce$ion arge7 >
@
reurn nullB
@
-
7/24/2019 Thread Scheduling and Dispatching
46/75
Scheduler 2xampleSche&uler !che&uler #in&Sche&ulerDE,8G7B
i# !che&uler null7 >
Realime1hrea&
ne% Realime1rea&
null* 00 !che&uling $aram
ne% "erio&ic"arameer! 00 relea!e $aram
null* 00 !ar
ne% Relai(e1ime* 7* 00 $erio&ne% Realai(e1imeK* 7* 00 co!
ne% Relai(e1imeK* 7* 00 &ea&line
null* 00 o(errunHan&ler
null7* 00 mi!!Han&ler
null* 00 memory $aram
null* 00 memory area
null7 > 00 grou$ $aram
$u'lic (oi& run7 > 00 runna'le logic0? hrea& $roce!!ing ?0
@
@
-
7/24/2019 Thread Scheduling and Dispatching
47/75
Scheduler 2xample
ry >
Sche&uler.!e,e#aulSche&uler!che&uler7B
@ cach SecuriyE)ce$ion !ecuriy7 >
@
'oolean u!eE,8 #al!eB
ry >
i# Sche&uler.ge,e#aulSche&uler7.ge"olicy5ame7.eual!DE,8G77 >
u!eE,8 rueB
@
-
7/24/2019 Thread Scheduling and Dispatching
48/75
"rocessing)roup 2xample
Sche&uling"arameer! $$
ne% "rioriy"arameer!"rioriySche&uler.ge5orm"rioriy77B
"roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
49/75
"rocessing)roup 2xample
Realime1hrea&
ne% Realime1hrea&
$$* 00 $rioriy $arameer!
ne% A$erio&ic"arameer! 00 $erio&ic $arameer!
ne% Relai(e1ime* 7* 00 co!ne% Relai(e1ime* 7* 00 &ea&line
null* 00 co! o(errun han&ler
null7* 00 &ea&line mi!! han&ler
null* 00 memory $arameer!
null* 00 memory
grou$7 > 00 grou$ $aramer!$u'lic (oi& run7 >
0? &o hrea& a!+ ?0
@
@
-
7/24/2019 Thread Scheduling and Dispatching
50/75
"rocessing)roup 2xample
Realime1hrea& 2
ne% Realime1hrea&
$$* 00 $rioriy $arameer!
ne% A$erio&ic"arameer! 00 $erio&ic $arameer!
ne% Relai(e1imeK* 7* 00 co!ne% Relai(e1ime2* 7* 00 &ea&line
null* 00 co! o(errun han&ler
null7* 00 &ea&line mi!! han&ler
null* 00 memory $arameer!
null* 00 memory
grou$7 > 00 grou$ $aramer!$u'lic (oi& run7 >
0? &o hrea& a!+ ?0
@
@
-
7/24/2019 Thread Scheduling and Dispatching
51/75
"rocessing)roup 2xample
!$.!e"rioriy
-
7/24/2019 Thread Scheduling and Dispatching
52/75
Ta3ea4a#s
S$eci#icaion* no an im$lemenaion
E)en!i'iliy
9ene#i! o# Ja(a
-
7/24/2019 Thread Scheduling and Dispatching
53/75
%"I Reference
-
7/24/2019 Thread Scheduling and Dispatching
54/75
%"I Summar#
iner#ace Sche&ula'le e)en&! /a(a.lang.Runna'le
cla!! Realime1hrea& e)en&! /a(a.lang.1hrea& im$lemen! Sche&ula'le
cla!! 5oHea$Realime1hrea& e)en&! Realime1hrea&
a'!rac cla!! Sche&uler
cla!! "rioriySche&uler e)en&! Sche&uler
a'!rac cla!! Sche&uling"arameer!
cla!! "rioriy"arameer! e)en&! Sche&uling"arameer!
cla!! Im$orance"arameer! e)en&! "rioriy"arameer!
a'!rac cla!! Relea!e"arameer!
cla!! "erio&ic"arameer! e)en&! Relea!e"arameer!
cla!! A$erio&ic"arameer! e)en&! Relea!e"arameer!
cla!! S$ora&ic"arameer! e)en&! A$erio&ic"arameer!
cla!! "roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
55/75
Scheduler
Syntax:
$u'lic a'!rac cla!! Sche&uler
Constructor:
$u'lic Sche&uler7
-
7/24/2019 Thread Scheduling and Dispatching
56/75
Scheduler ethods
$roece& a'!rac (oi& a&&1o8ea!i'iliySche&ula'le !che&ua'le7
$u'lic 'oolean changeI#8ea!i'leSche&ula'le !che&ula'le*
Relea!e"arameer! relea!e* Memory"arameer!* memory7
$u'lic !aic Sche&uler ge,e#aulSche&uler7
$u'lic a'!rac /a(a.lang.Sring ge"olicy5ame7
$u'lic a'!rac 'oolean i!8ea!i'le7
$roece& a'!rac (oi& remo(e8rom8ea!i'iliySche&ula'le !che&ula'le7
$u'lic !aic (oi& !e,e#aulSche&ulerSche&uler !che&uler7
-
7/24/2019 Thread Scheduling and Dispatching
57/75
"riorit#Scheduler
Syntax:
$u'lic cla!! "rioriySche&uler e)en&!
Sche&uler
Constructor:
$u'lic "rioriySche&uler7
-
7/24/2019 Thread Scheduling and Dispatching
58/75
"riorit#Scheduler ethods
$roece& (oi& a&&1o8ea!i'iliySche&ula'le !7
$u'lic 'oolean changeI#8ea!i'leSche&ua'le !che&ula'le* Relea!e"arameer!relea!e* Memory"arameer! memory7
$u'lic (oi& #ireSche&ula'leSche&ua'le !che&ula'le7
$u'lic in geMa)"rioriy7
$u'lic !aic in geMa)"rioriy7
$u'lic !aic in geMa)"rioriy/a(a.lang.1hrea& hrea&7
$u'lic in geMin"rioriy7
$u'lic !aic in geMin"rioriy/a(a.lang.1hrea& hrea&7
$u'lic in ge5orm"rioriy7
$u'lic !aic in ge5orm"rioriy/a(a.lang.1hrea& hrea&7$u'lic /a(a.lang.Sring ge"olicy5ame7
$u'lic !aic "rioriySche&ular in!ance7
$u'lic 'oolean i!8ea!i'le7
$roece& (oi& remo(e8rom8ea!i'iliySche&ula'le !7
-
7/24/2019 Thread Scheduling and Dispatching
59/75
Schedua$le
Syntax:
$u'lic iner#ace Sche&ula'le e)en&! /a(a.lang.Runna'le
-
7/24/2019 Thread Scheduling and Dispatching
60/75
Schedua$le ethods
$u'lic (oi& a&&1o8ea!i'iliy7
$u'lic Memory"arameer! geMemory"arameer!7
$u'lic Relea!e"arameer! geRelea!e"arameer!7
$u'lic Sche&uler geSche&uler7$u'lic Sche&uling"arameer! geSche&uling"arameer!7
$u'lic (oi& remo(e8rom8ea!i'iliy7
$u'lic (oi& !eMemory"arameer!Memory"arameer! memory7
$u'lic (oi& !eRelea!e"arameer!Relea!e"arameer! relea!e7
$u'lic (oi& !eSche&ulerSche&uler !che&uler7
$u'lic (oi& !eSche&uling"arameer!Sche&uling"arameer!7
-
7/24/2019 Thread Scheduling and Dispatching
61/75
RealtimeThread
Syntax:
$u'lic cla!! Realime1hrea& e)en&! /a(a.lang.1hrea& im$lemen!Sche&ula'le
Constructors:
$u'lic Realime1hrea&7
$u'lic Realime1hrea&Sche&uling"arameer! !che&uling7
$u'lic Realime1hrea&Sche&uling"arameer! !che&uling*Relea!e"arameer! relea!e7
$u'lic Realime1hrea&Sche&uling"arameer !che&uling*Relea!e"arameer! relea!e* Memory"arameer! memory*MemoryArea area* "roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
62/75
RealtimeThread ethods
$u'lic (oi& a&&1o8ea!i'iliy7
$u'lic !aic Realime1hrea& currenRealime1hrea&7
$u'lic !ynchronie& (oi& &e!che&ule"erio&ic7
$u'lic MemoryArea geMemoryArea7$u'lic Memory"arameer! geMemory"arameer!
$u'lic "roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
63/75
RealtimeThread ethods
$u'lic (oi& remo(e8rom8rea!i'iliy7
$u'lic !ynchronie& (oi& !che&ule"erio&ic7
$u'lic (oi& !eMemory"arameer!Memory"arameer! $arameer!7
$u'lic (oi& !e"roce!!!ing
-
7/24/2019 Thread Scheduling and Dispatching
64/75
*o'eapRealtimeThread
Syntax:
$u'lic cla!! 5oHea$Realime1hrea& e)en&! Realime1hrea&
Constructors:5oHea$Realime1hrea&Sche&uling"arameer! !che&uling*
MemoryArea area7
5oHea$Realime1hrea&!che&uling"arameer! !che&uling*
Relea!e"arameer! relea!e* MemoryArea area7
5oHea$Realime1hrea&Sche&uling"arameer! !che&uling*Relea!e"arameer! relea!e* Memory"arameer! memory*
MemoryArea area* "roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
65/75
Scheduling"arameters
Syntax:
$u'lic a'!rac cla!! Sche&uling"arameer!
Contructor:
$u'lic Sche&uling"arameer!7
-
7/24/2019 Thread Scheduling and Dispatching
66/75
"riorit#"arameters
Syntax:
$u'lic cla!! "rioriy"arameer! e)en&! Sche&uling"arameer!
Constructor:$u'lic "rioriy"arameer!in $rioriy7
Methods:
$u'lic in ge"rioriy7
$u'lic (oi& !e"rioriyin $rioriy7
$u'lic /a(a.lang.Sring oSring7
-
7/24/2019 Thread Scheduling and Dispatching
67/75
Importance"arameters
Syntax:
$u'lic cla!! Im$orance"arameer! e)en&! "rioriy"arameer!
Constructor:$u'lic Im$orance"arameer!in $rioriy* in im$orance7
Methods:
$u'lic in geIm$orance7
$u'lic (oi& !eIm$orancein im$orance7
$u'lic /a(a.lang.Sring oSring7
-
7/24/2019 Thread Scheduling and Dispatching
68/75
Release"arameters
Syntax:
$u'lic a'!rac cla!! Relea!e"arameer!
Constructor:
$roece& Relea!e"arameer!Relai(e1ime
co!* Relai(e1ime &ea&line*A!yncE(enHan&ler o(errunHan&ler*
A!yncE(enHan&ler mi!!Han&ler7
-
7/24/2019 Thread Scheduling and Dispatching
69/75
Release"arameters ethods
$u'lic Relai(e1ime geCo!7
$u'lic A!yncE(enHan&ler geCo!(errunHan&er7
$u'lic Relai(e1ime ge,ea&line7
$u'lic A!yncE(enHan&ler ge,ea&lineMi!!Han&ler7
$u'lic (oi& !eCo!Relai(e1ime co!7
$u'lic (oi& !eCo!(errunHan&lerA!yncE(enHan&lerhan&ler7
$u'lic (oi& !e,ea&lineRelai(e1ime &ea&line7$u'lic (oi& !e,ea&lineMi!!Han&lerA!yncE(enHan&ler
han&er7
-
7/24/2019 Thread Scheduling and Dispatching
70/75
"eriodic"arameters
Syntax:
$u'lic cla!! "erio&"arameer! e)en&! Relea!e"arameer!
Constructor:
$u'lic "erio&ic"arameer!HighRe!oluion !ar* Relai(e1ime $erio&*Relai(e1ime co!* Relai(e1ime &ea&line* A!yncE(enHan&lero(errunHan&ler* A!yncE(enHan&ler mi!!Han&ler7
Methods:
$u'lic Relai(e1ime ge"erio&7$u'lic HighRe!oluion geSar7
$u'lic (oi& !e"erio&Relai(e1ime $erio&7
$u'lic (oi& !eSarHighRe!oluion !ar7
-
7/24/2019 Thread Scheduling and Dispatching
71/75
%periodic"arameters
Syntax:
$u'lic cla!! A$erio&ic"arameer! e)en&!
Relea!e"arameer!
Constructor:
$u'lic A$erio&ic"arameer!Relai(e1ime co!*
Relai(e1ime &ea&line* A!yncE(enHan&ler
o(errunHan&ler* A!yncE(enHan&ler mi!!Han&ler7
-
7/24/2019 Thread Scheduling and Dispatching
72/75
Sporadic"arameters
Syntax:
$u'lic cla!! S$ora&ic"arameer! e)en&! A$erio&ic"arameer!
Constructor:$u'lic S$ora&ic"arameer!Relai(e1ime minIner(al* Relai(e1ime
co!* Relai(e1ime &ea&line* A!yncE(enHan&ler
o(errunHan&ler* A!yncE(enHan&ler mi!!Han&ler7
Methods:
$u'lic Relai(e1ime geMinimumInerarri(al7
$u'lic (oi& !eMinimumInerarri(alRelai(e1ime minimum7
-
7/24/2019 Thread Scheduling and Dispatching
73/75
"rocessing)roup"arameters
Syntax:
$u'lic cla!! "roce!!ing
-
7/24/2019 Thread Scheduling and Dispatching
74/75
"rocessing)roup"arameters ethods
$u'lic Relai(e1ime geCo!7
$u'lic A!yncE(enHan&ler geCo!(errunHan&ler7
$u'lic Relai(e1ime ge,ea&line7
$u'lic A!yncE(enHan&ler ge,ea&lineMi!!Han&ler7
$u'lic Relai(e1ime ge"erio&7
$u'lic HighRe!oluion1ime geSar7
$u'lic (oi& !eCo!Relai(e1ime co!7
$u'lic (oi& !eCo!(errunHan&lerA!yncE(enHan&ler han&ler7
$u'lic (oi& !e,ea&lineRelai(e1ime &ea&line7$u'lic (oi& !e,ea&lineMi!!Han&lerA!yncE(enHan&ler han&ler7
$u'lic (oi& !e"erio&Relai(e1ime $erio&7
$u'lic (oi& !eSarHighRe!oluion1ime !ar7
-
7/24/2019 Thread Scheduling and Dispatching
75/75
Reference
h$:00%%%.r/.org0