Vous êtes sur la page 1sur 6

Basic concepts of real-time operating systems by David Kalinsky (Nov.

18, 2003) The fundamentals To most people, embedded systems are not reco ni!able as comp"ters. #nstead, t$ey are $idden inside everyday ob%ects t$at s"rro"nd "s and $elp "s in o"r lives. &mbedded systems typically do not inter'ace (it$ t$e o"tside (orld t$ro" $ 'amiliar personal comp"ter inter'ace devices s"c$ as a mo"se, keyboard and rap$ic "ser inter'ace. #nstead, t$ey inter'ace (it$ t$e o"tside (orld t$ro" $ "n"s"al inter'aces s"c$ as sensors, act"ators and speciali!ed comm"nication links. )eal*time and embedded systems operate in constrained environments in ($ic$ comp"ter memory and processin po(er are limited. T$ey o'ten need to provide t$eir services (it$in strict time deadlines to t$eir "sers and to t$e s"rro"ndin (orld. #t is t$ese memory, speed and timin constraints t$at dictate t$e "se o' real*time operatin systems in embedded so't(are. Basic kernel services #n t$e disc"ssion belo(, (e (ill 'oc"s on t$e +kernel+ , t$e part o' an operatin system t$at provides t$e most basic services to application so't(are r"nnin on a processor. T$e +kernel+ o' a real*time operatin system (+)T-.+) provides an +abstraction layer+ t$at $ides 'rom application so't(are t$e $ard(are details o' t$e processor (or set o' processors) "pon ($ic$ t$e application so't(are (ill r"n. T$is is s$o(n in /i "re1.

Figure 1: An RTOS

ernel provides an A!straction "ayer !et#een Application Soft#are and $m!edded %ard#are

#n providin t$is +abstraction layer+ t$e )T-. kernel s"pplies 'ive main cate ories o' basic services to application so't(are, as seen in /i "re 2.

Figure &: Basic Services 'rovided !y a Real-Time Operating System

ernel

T$e most basic cate ory o' kernel services, at t$e very center o' /i "re 2, is Task 0ana ement. T$is set o' services allo(s application so't(are developers to desi n t$eir so't(are as a n"mber o' separate +c$"nks+ o' so't(are ** eac$ $andlin a distinct topic, a distinct oal, and per$aps its o(n real*time deadline. &ac$ separate +c$"nk+ o' so't(are is called a +task.+ .ervices in t$is cate ory incl"de t$e ability to la"nc$ tasks and assi n priorities to t$em. T$e main )T-. service in t$is cate ory is t$e sc$ed"lin o' tasks as t$e embedded system is in operation. T$e Task .c$ed"ler controls t$e e1ec"tion o' application so't(are tasks, and can make t$em r"n in a very timely and responsive 'as$ion. 23ater, (e (ill see t$e details o' $o( t$is is done.4 T$e second cate ory o' kernel services, s$o(n at t$e top o' /i "re 2, is #ntertask 5omm"nication and .ync$roni!ation. T$ese services make it possible 'or tasks to pass in'ormation 'rom one to anot$er, (it$o"t dan er o' t$at in'ormation ever bein dama ed. T$ey also make it possible 'or tasks to coordinate, so t$at t$ey can prod"ctively cooperate (it$ one anot$er. 6it$o"t t$e $elp o' t$ese )T-. services, tasks mi $t (ell comm"nicate corr"pted in'ormation or ot$er(ise inter'ere (it$ eac$ ot$er. .ince many embedded systems $ave strin ent timin re7"irements, most )T-. kernels also provide some basic Timer services, s"c$ as task delays and time*o"ts. T$ese are s$o(n on t$e ri $t side o' /i "re 2. 0any (b"t not all) )T-. kernels provide Dynamic 0emory 8llocation services. T$is cate ory o' services allo(s tasks to +borro(+ c$"nks o' )80 memory 'or temporary "se in application so't(are. -'ten t$ese c$"nks o' memory are t$en passed 'rom task to task, as a means o' 7"ickly comm"nicatin lar e amo"nts o' data bet(een tasks. .ome very small )T-. kernels t$at are intended 'or ti $tly memory*limited environments, do not o''er Dynamic 0emory 8llocation services. 0any (b"t not all) )T-. kernels also provide a +Device #9- ."pervisor+ cate ory o' services. T$ese services, i' available, provide a "ni'orm 'rame(ork 'or or ani!in and accessin t$e many $ard(are device drivers t$at are typical o' an embedded system. 2/or more in'ormation on t$is, please visit: t$e device drivers pa e at t$e Kalinsky 8ssociates 6ebsite4 #n addition to kernel services, many )T-.s o''er a n"mber o' optional add*on operatin system components 'or s"c$ $i $*level services as 'ile system or ani!ation, net(ork comm"nication, net(ork mana ement, database mana ement, "ser*inter'ace rap$ics, etc. 8lt$o" $ many o' t$ese add*on components are m"c$ lar er and m"c$ more comple1 t$an t$e )T-. kernel, t$ey rely on t$e presence o' t$e )T-. kernel and take advanta e o' its basic services. &ac$ o' t$ese add*on components is incl"ded in an embedded system only i' its services are needed 'or implementin t$e embedded application, in order to keep pro ram memory cons"mption to a minim"m. #n t$is paper, (e (ill 'oc"s on t$e basic )T-. kernel services 'or task mana ement, intertask comm"nication and sync$roni!ation, and dynamic memory allocation. RTOSs vs( general-purpose operating systems 0any non*real*time operatin systems also provide similar kernel services. T$e key di''erence bet(een eneral* comp"tin operatin systems and real*time operatin systems is t$e need 'or + deterministic + timin be$avior in t$e real*time operatin systems. /ormally, +deterministic+ timin means t$at operatin system services cons"me only kno(n and e1pected amo"nts o' time. #n t$eory, t$ese service times co"ld be e1pressed as mat$ematical 'orm"las. T$ese 'orm"las m"st be strictly al ebraic and not incl"de any random timin components. )andom elements in service times co"ld ca"se random delays in application so't(are and co"ld t$en make t$e application randomly miss real*time deadlines , a scenario clearly "nacceptable 'or a real*time embedded system. ;eneral*comp"tin non*real*time operatin systems are o'ten 7"ite non*deterministic. T$eir services can in%ect random delays into application so't(are and t$"s ca"se slo( responsiveness o' an application at "ne1pected times. #' yo" ask t$e developer o' a non*real*time operatin system 'or t$e al ebraic 'orm"la describin t$e timin be$avior o' one o' its services (s"c$ as sendin a messa e 'rom task to task), yo" (ill invariably not et an al ebraic 'orm"la. #nstead t$e developer o' t$e non*real*time operatin system (s"c$ as 6indo(s, <ni1 or 3in"1) (ill %"st ive yo" a p"!!led look. Deterministic timin be$avior (as simply not a desi n oal 'or t$ese eneral*comp"tin operatin systems. -n t$e ot$er $and, real*time operatin systems o'ten o a step beyond basic determinism. /or most kernel services, t$ese operatin systems o''er constant load-independent timin : #n ot$er (ords, t$e al ebraic 'orm"la is as simple as: T(message_send) = constant , irrespective o' t$e len t$ o' t$e messa e to be sent, or ot$er 'actors s"c$ as t$e n"mbers o' tasks and 7"e"es and messa es bein mana ed by t$e )T-..

Task scheduling 0ost )T-.s do t$eir sc$ed"lin o' tasks "sin a sc$eme called +priority*based preemptive sc$ed"lin .+ &ac$ task in a so't(are application m"st be assi ned a priority, (it$ $i $er priority val"es representin t$e need 'or 7"icker

responsiveness. =ery 7"ick responsiveness is made possible by t$e +preemptive+ nat"re o' t$e task sc$ed"lin . +>reemptive+ means t$at t$e sc$ed"ler is allo(ed to stop any task at any point in its e1ec"tion, i' it determines t$at anot$er task needs to r"n immediately. T$e basic r"le t$at overns priority*based preemptive sc$ed"lin is t$at at every moment in time, +T$e ?i $est >riority Task t$at is )eady to )"n, (ill be t$e Task t$at 0"st be )"nnin .+ #n ot$er (ords, i' bot$ a lo(*priority task and a $i $er*priority task are ready to r"n, t$e sc$ed"ler (ill allo( t$e $i $er*priority task to r"n 'irst. T$e lo(* priority task (ill only et to r"n a'ter t$e $i $er*priority task $as 'inis$ed (it$ its c"rrent (ork. 6$at i' a lo(*priority task $as already be "n to r"n, and t$en a $i $er*priority task becomes ready@ T$is mi $t occ"r beca"se o' an e1ternal (orld tri er s"c$ as a s(itc$ closin . 8 priority*based preemptive sc$ed"ler (ill be$ave as 'ollo(s: #t (ill allo( t$e lo(*priority task to complete t$e c"rrent assembly*lan "a e instr"ction t$at it is e1ec"tin . 2A"t it (onBt allo( it to complete an entire line o' $i $*level lan "a e codeC nor (ill it allo( it to contin"e r"nnin "ntil t$e ne1t clock tick.4 #t (ill t$en immediately stop t$e e1ec"tion o' t$e lo(*priority task, and allo( t$e $i $er*priority task to r"n. 8'ter t$e $i $er*priority task $as 'inis$ed its c"rrent (ork, t$e lo(*priority task (ill be allo(ed to contin"e r"nnin . T$is is s$o(n in /i "re 3, ($ere t$e $i $er*priority task is called +0id*>riority Task.+ -' co"rse, ($ile t$e mid*priority task is r"nnin , an even $i $er*priority task mi $t become ready. T$is is represented in /i "re 3 by +Tri erD2+ ca"sin t$e +?i $*>riority Task+ to become ready. #n t$at case, t$e r"nnin task (+0id*>riority Task+) (o"ld be preempted to allo( t$e $i $*priority task to r"n. 6$en t$e $i $*priority task $as 'inis$ed its c"rrent (ork, t$e mid*priority task (o"ld be allo(ed to contin"e. 8nd a'ter bot$ t$e $i $*priority task and t$e mid*priority task complete t$eir (ork, t$e lo(*priority task (o"ld be allo(ed to contin"e r"nnin . T$is sit"ation mi $t be called +nested preemption.+

Figure ): Timeline for 'riority-!ased 'reemptive Scheduling $*amples &ac$ time t$e priority*based preemptive sc$ed"ler is alerted by an e1ternal (orld tri er (s"c$ as a s(itc$ closin ) or a so't(are tri er (s"c$ as a messa e arrival), it m"st o t$ro" $ t$e 'ollo(in E steps: Determine ($et$er t$e c"rrently r"nnin task s$o"ld contin"e to r"n. #' not F Determine ($ic$ task s$o"ld r"n ne1t. .ave t$e environment o' t$e task t$at (as stopped (so it can contin"e later). .et "p t$e r"nnin environment o' t$e task t$at (ill r"n ne1t. 8llo( t$is task to r"n. T$ese E steps to et$er are called +task s(itc$in .+ Fi*ed-time task s#itching T$e time it takes to do task s(itc$in is o' interest ($en eval"atin an operatin system. 8 simple eneral* comp"tin (non*preemptive) operatin system mi $t do task s(itc$in only at timer tick times, ($ic$ mi $t 'or e1ample be ten milliseconds apart. T$en i' t$e need 'or a task s(itc$ arises any($ere (it$in a 10*millisecond time'rame, t$e act"al task s(itc$ (o"ld occ"r only at t$e end o' t$e c"rrent 10*millisecond period. ."c$ a delay (o"ld be "nacceptable in most real*time embedded systems. #n more sop$isticated preemptive task sc$ed"lers, t$e sc$ed"ler may need to searc$ t$ro" $ arrays o' tasks to determine ($ic$ task s$o"ld be made to r"n ne1t. #' t$ere are more tasks to searc$ t$ro" $, t$e searc$ (ill take lon er. ."c$ searc$es are o'ten done by eneral*comp"tin operatin systems, t$"s makin t$em non* deterministic. )eal*time operatin systems, on t$e ot$er $and, avoid s"c$ searc$es by "sin incrementally "pdated tables t$at allo( t$e task sc$ed"ler to identi'y t$e task t$at s$o"ld r"n ne1t in a rapid 'i1ed*time 'as$ion. T$ese t(o types o' timin be$avior 'or task s(itc$in can be seen in /i "re G.

Figure +: Task S#itching Timing #n t$is 'i "re, (e see t$at 'or a eneral*comp"tin (non*real*time) operatin system, t$e task s(itc$in time enerally rises as a so't(are system incl"des more tasks t$at can be sc$ed"led. ?o(ever, t$e act"al time 'or a task s(itc$ is not t$e time s$o(n by t$e das$ed red line. #nstead, in any iven task s(itc$ instance, it mi $t be (ell above or (ell belo( t$e time s$o(n by t$e das$ed red line. T$e s$aded re ions s"rro"ndin t$e das$ed red line simply s$o( t$e likeli$ood o' t$e act"al task s(itc$ time bein t$at 'ar above or belo( t$e das$ed red line. -n t$e ot$er $and, t$e $ori!ontal solid reen line s$o(s t$e task s(itc$in time c$aracteristic o' a real*time operatin system. #t is constant, independent o' any load 'actor s"c$ as t$e n"mber o' tasks in a so't(are system. >lease note t$at in some instances, s"c$ as t$e le'tmost area o' t$e rap$, t$e task s(itc$in time mi $t in special cases be 7"icker 'or a eneral*comp"tin non*real*time operatin system, t$an 'or a real*time operatin system. T$is does not detract 'rom t$e appropriateness o' a real*time operatin system 'or real*time embedded applications. /or, in 'act, t$e term +real*time+ does not mean +as 'ast as possible+ b"t rat$er +real*time+ demands consistent, repeatable, kno(n timin per'ormance. 8lt$o" $ a non*real*time operatin system mi $t do some 'aster task s(itc$in 'or small n"mbers o' tasks, it mi $t e7"ally (ell introd"ce a lon time delay t$e ne1t time it does t$e same task s(itc$. T$e stren t$ o' a real*time operatin system is in its kno(n, repeatable timin per'ormance, ($ic$ is also typically 'aster t$an t$at o' a non*deterministic task sc$ed"ler in sit"ations o' lar e n"mbers o' tasks in a so't(are system. 0ost o'ten, t$e real*time operatin system (ill e1$ibit task*s(itc$in times m"c$ 'aster t$an its non*real*time competitor ($en t$e n"mber o' tasks ro(s above E or 10. ,ntertask communication and synchroni-ation 0ost operatin systems, incl"din )T-.s, o''er a variety o' mec$anisms 'or comm"nication and sync$roni!ation bet(een tasks. T$ese mec$anisms are necessary in a preemptive environment o' many tasks, beca"se (it$o"t t$em t$e tasks mi $t (ell comm"nicate corr"pted in'ormation or ot$er(ise inter'ere (it$ eac$ ot$er. /or instance, a task mi $t be preempted ($en it is in t$e middle o' "pdatin a table o' data. #' a second task t$at preempts it reads 'rom t$at table, it (ill read a combination o' some areas o' ne(ly*"pdated data pl"s some areas o' data t$at $ave not yet been "pdated. 2Ne( Horkers (o"ld call t$is a +mis$*mas$.+4 T$ese "pdated and old data areas to et$er may be incorrect in combination, or may not even make sense. 8n e1ample is a data table containin temperat"re meas"rements t$at be ins (it$ t$e contents +10 5.+ 8 task be ins "pdatin t$is table (it$ t$e ne( val"e +II /+, (ritin into t$e table c$aracter*by*c$aracter. #' t$at task is preempted in t$e middle o' t$e "pdate, a second task t$at preempts it co"ld possibly read a val"e like +I0 5+ or +II 5.+ or +II /+, dependin on precisely ($en t$e preemption took place. T$e partially "pdated val"es are clearly incorrect, and are ca"sed by delicate timin coincidences t$at are very $ard to deb" or reprod"ce consistently. 8n )T-.Js mec$anisms 'or comm"nication and sync$roni!ation bet(een tasks are provided to avoid t$ese kinds o' errors. 0ost )T-.s provide several mec$anisms, (it$ eac$ mec$anism optimi!ed 'or reliably passin a di''erent kind o' in'ormation 'rom task to task. >robably t$e most pop"lar kind o' comm"nication bet(een tasks in embedded systems is t$e passin o' data 'rom one task to anot$er. 0ost )T-.s o''er a messa e passin mec$anism 'or doin t$is, as seen in /i "re E. &ac$ messa e can contain an array or b"''er o' data.

Figure .: ,ntertask /essage 0ommunication #' messa es can be sent more 7"ickly t$an t$ey can be $andled, t$e )T-. (ill provide messa e 7"e"es 'or $oldin t$e messa es "ntil t$ey can be processed. T$is is s$o(n in /i "reK. 8not$er kind o' comm"nication bet(een tasks in embedded systems is t$e passin o' ($at mi $t be called +sync$roni!ation in'ormation+ 'rom one task to anot$er. +.ync$roni!ation in'ormation+ is like a command, ($ere some commands co"ld be positive, and some ne ative. /or e1ample, a ne ative command to a task (o"ld be somet$in like +>lease donBt print ri $t no(, beca"se my task is "sin t$e printer.+ -r more enerally, +# (ant to lock t$e . . . 'or my o(n "se only.+ 8 positive command (o"ld be somet$in like +#Bve detected a cardiac emer ency, and # (ant yo" to $elp me $andle it.+ -r more enerally, +>lease %oin me in $andlin . . .+ 0ost )T-.s o''er a semap$ore or m"te1 mec$anism 'or $andlin ne ative sync$roni!ation (sometimes called +m"t"al e1cl"sion+). T$ese mec$anisms allo( tasks to lock certain embedded system reso"rces 'or t$eir "se only, and s"bse7"ently to "nlock t$e reso"rce ($en t$eyBre done. /or positive sync$roni!ation, di''erent )T-.s o''er di''erent mec$anisms. .ome )T-.s o''er event*'la s, ($ile ot$ers o''er si nals. 8nd yet ot$ers rely on messa e passin 'or positive sync$roni!ation as (ell as data passin d"ties. 1eterminism and high-speed message passing #ntertask messa e comm"nication is anot$er area ($ere di''erent operatin systems s$o( di''erent timin c$aracteristics. 0ost operatin systems act"ally copy messa es t(ice as t$ey trans'er t$em 'rom task to task via a messa e 7"e"e. .ee /i "re K. T$e 'irst copyin is 'rom t$e messa e*sender task to an operatin system*o(ned +secret+ area o' )80 memory (implementin t$e +messa e 7"e"e+)C and t$e second copyin is 'rom t$e operatin systemBs +secret+ )80 area to t$e messa e*receiver task. 5learly t$is is non*deterministic in its timin , as t$ese copyin activities take lon er as messa e len t$ increases.

Figure 2: /essage Transfer via /essage 3ueue 8n approac$ t$at avoids t$is non*determinism and also accelerates per'ormance, is to $ave t$e operatin system copy a pointer to t$e messa e and deliver t$at pointer to t$e messa e*receiver task (it$o"t movin t$e messa e contents at all. #n order to avoid access collisions, t$e operatin system t$en needs to o back to t$e messa e* sender task and obliterate its copy o' t$e pointer to t$e messa e. /or lar e messa es, t$is eliminates t$e need 'or len t$y copyin and eliminates non*determinism. 1ynamic memory allocation Determinism o' service times is also an iss"e in t$e area o' dynamic allocation o' )80 memory. 0any eneral* comp"tin non*real*time operatin systems o''er memory allocation services 'rom ($at is termed a +?eap.+ T$e 'amo"s +malloc+ and +'ree+ services kno(n to 5*lan "a e pro rammers (ork 'rom a $eap. Tasks can temporarily borro( some memory 'rom t$e operatin systemBs $eap by callin +malloc+, and speci'yin t$e si!e o' memory b"''er needed. 6$en t$is task (or anot$er task) is 'inis$ed (it$ t$is memory b"''er it can ret"rn t$e b"''er to t$e operatin system by callin +'ree.+ T$e operatin system (ill t$en ret"rn t$e b"''er to t$e $eap, ($ere its memory mi $t be "sed a ain, per$aps as part o' a lar er b"''er. -r per$aps it may in t$e '"t"re be broken into several smaller b"''ers. ?eaps s"''er 'rom a p$enomenon called +&1ternal 0emory /ra mentation+ t$at may ca"se t$e $eap services to de rade. T$is 'ra mentation is ca"sed by t$e 'act t$at ($en a b"''er is ret"rned to t$e $eap, it may in t$e '"t"re be broken into smaller b"''ers ($en +malloc+ re7"ests 'or smaller b"''er si!es occ"r. 8'ter a $eap "nder oes many cycles o' +malloc+s and +'ree+s, small slivers o' memory may appear bet(een memory b"''ers t$at are bein "sed by tasks. T$ese slivers are so small t$at t$ey are "seless to tasks. A"t t$ey are trapped bet(een b"''ers t$at are bein "sed by tasks, so t$ey canBt be coa "lated (+ l"ed+) to et$er into bi er, "se'"l b"''er si!es. -ver time, a $eap (ill $ave more and more o' t$ese slivers. T$is (ill event"ally res"lt in sit"ations ($ere tasks (ill ask 'or memory b"''ers (+malloc+) o' a certain si!e, and t$ey (ill be re'"sed by t$e operatin system *** even t$o" $ t$e operatin system $as eno" $ available memory in its $eap. T$e problem: T$at memory is scattered in small slivers distrib"ted in vario"s separate parts o' t$e $eap. #n operatin system terminolo y, t$e slivers are called +'ra ments+,

and t$is problem is called +e1ternal memory 'ra mentation.+ T$is 'ra mentation problem can be solved by so*called + arba e collection+ (de'ra mentation) so't(are. <n'ort"nately, + arba e collection+ al orit$ms are o'ten (ildly non*deterministic , in%ectin randomly*appearin random*d"ration delays into $eap services. T$ese are o'ten seen in t$e memory allocation services o' eneral* comp"tin non*real*time operatin systems. T$is p"ts t$e embedded system developer ($o (ants to "se a eneral*comp"tin non*real*time operatin system into a 7"andry: .$o"ld t$e embedded system be allo(ed to s"''er occasional randomly*appearin random*d"ration delays i' 9 ($en + arba e collection+ kicks in@... -r, alternatively, s$o"ld t$e embedded system be allo(ed to 'ra ment its memory "ntil application so't(are +malloc+ re7"ests to t$e $eap are re'"sed even t$o" $ a s"''icient total amo"nt o' 'ree memory is still available@ Neit$er alternative is acceptable 'or embedded systems t$at need to provide service contin"ally 'or lon periods o' time. )eal*time operatin systems, on t$e ot$er $and, solve t$is 7"andry by alto et$er avoidin bot$ memory 'ra mentation and + arba e collection+, and t$eir conse7"ences. )T-.s o''er non*'ra mentin memory allocation tec$ni7"es instead o' $eaps. T$ey do t$is by limitin t$e variety o' memory c$"nk si!es t$ey make available to application so't(are. 6$ile t$is approac$ is less 'le1ible t$an t$e approac$ taken by memory $eaps, t$ey do avoid e1ternal memory 'ra mentation and avoid t$e need 'or de'ra mentation. /or e1ample, t$e +>ools+ memory allocation mec$anism allo(s application so't(are to allocate c$"nks o' memory o' per$aps G or 8 di''erent b"''er si!es per pool. >ools totally avoid e1ternal memory 'ra mentation, by not permittin a b"''er t$at is ret"rned to t$e pool to be broken into smaller b"''ers in t$e '"t"re. #nstead, ($en a b"''er is ret"rned t$e pool, it is p"t onto a +'ree b"''er list+ o' b"''ers o' its o(n si!e t$at are available 'or '"t"re re*"se at t$eir ori inal b"''er si!e. T$is is s$o(n in /i "re L.

Figure 4: A /emory 'ool5s Free Buffer "ists 0emory is allocated and de*allocated 'rom a pool (it$ deterministic, o'ten constant, timin . Summary )eal*time and embedded systems are "sed in many applications s"c$ as airborne comp"ters, medical instr"ments and comm"nication systems. &mbedded systems are c$aracteri!ed by limited processor memory, limited processin po(er, and "n"s"al inter'aces to t$e o"tside (orld. )eal*time re7"irements impose strin ent time deadlines 'or deliverin t$e res"lts o' embedded processin . )T-. kernels $ide 'rom application so't(are t$e lo(*level details o' system $ard(are, and at t$e same time provide several cate ories o' services to application so't(are. T$ese incl"de: task mana ement (it$ priority*based preemptive sc$ed"lin , reliable intertask comm"nication and sync$roni!ation, non*'ra mentin dynamic memory allocation, and basic timer services. T$e iss"e o' timin determinism is important in di''erentiatin eneral*comp"tin operatin systems 'rom real*time operatin systems. T$is iss"e crops "p in many parts o' operatin system kernels, s"c$ as task sc$ed"lers, dynamic memory allocation and intertask messa e comm"nication. 6$ile eneral*comp"tin operatin systems o'ten o''er non*deterministic services in t$ese areas, '"lly deterministic sol"tions are needed 'or real*time and embedded systems. 8 n"mber o' real*time operatin systems implement t$ese sol"tions in t$eir compact $i $* per'ormance kernels.

Vous aimerez peut-être aussi