Real Time in Plan 9

Sape Mullender Jim McKie *All L=>oH=JoHEAI MKHH=O0Ell,NAM JAHIAO%'%"

ABSTRACT

9A @AI?HE>A oKH ANFAHEAn?A MEJD JDA EmFlAmAnJ=JEon =n@ KIA oB = D=H@- HA=l-JEmA I?DA@KlAHBoHKIA En2l=n'=I=nAm>A@@A@oFAH=JEnCIOIJAm.

1. Introduction 2l=n ' BHom *All L=>I EI = CAnAH=l FKHFoIA oFAH=JEnC IOIJAm JD=J EI BEn@EnC En?HA=IEnC KIA =I =n Am>A@@A@ IOIJAmI Fl=JBoHm. 4A?AnJlO, MA D=LA IJ=HJA@ KIEnC 2l=n ' =I = >=IEIBoH= MEHAlAII>=IA IJ=JEon,MDE?DHAGKEHAI= D=H@HA=l-JEmA IOIJAm.

1.1. Real Time 1n JDEI IA?JEon, MA CELA = LAHO >HEAB EnJHo@K?JEon Jo HA=l-JEmA ?on?AFJI, AnoKCD Jo m=kA JDEIF=FAHHA=@=>lA >OEJIAlB. ) HA=l-JEmA FHo?AII EI ?D=H=?JAHEzA@ >O JDHAA >=IE? F=H=mAJAHI: EJI period, t, EJI deadline, d,=n@EJI cost, ;JDAO=HA EllKIJH=JA@En.ECKHA .

4AlA=IA TT + t T + t +oIJ c ,A=@lEnA + t

2AHEo@ t t ,A=@lEnA d d Figure 1 2=H=mAJAHI ?D=H=?JAHEzEnC = HA=l-JEmA FHo?AII; noJA JD=J EnJAH­ L=lI =HA En@E?=JA@ >O loMAH-?=IA lAJJAHI, MDElA JEmAI =HA En@E?=JA@ KIEnC ?=FEJ=lI.

6DA release, T, oB = FHo?AII EI JDA JEmA =J MDE?D EJ EI =lloMA@ Jo IJ=HJ HKnnEnC. 6DA deadline, D, EI JDA JEmA =J MDE?D JDA MoHk D=I Jo >A BEnEIDA@. 6DA cost, c, EI JDA =moKnJ oB JEmA JDA jo>J=kAI. 4A=l-JEmA FHo?AIIAI =HA KIK=llO ?l=IIEBEA@ =I FAHEo@E? oH IFoH=@E?. ) periodic FHo?AII mKIJ @o MoHk =J HACKl=H EnJAHL=lI oB t IA?on@I, JDA period, MEJDEn = deadline, d noJA JDA KIA oB @A=@lEnA >oJD =I = JEmA =n@ =n EnJAHL=l. ) sporadic FHo?AII mKIJ @o EJI jo> MEJDEn= @A=@lEnA, d,=BJAHIomA ANJAHn=l ALAnJ,EJI trigger. 6DA ?oIJ, c,mKIJ >A lAIIJD=nJDA @A=@lEnA, d,BoH= FHo?AIIJo>A I?DA@Kl=>lA. 1B JDAHA EI moHA JD=n onA HA=l-JEmA FHo?AII, JDAHA =HA =@@EJEon=l ?on@EJEonI JD=J mKIJ >A mAJ Jo =lloM =ll FHo?AIIAI Jo mAAJ JDAEH @A=@lEnAI. ) mEnEmKm ?on@EJEon EI JD=J JDA ?oIJI?onIKmA@FAHKnEJ oB JEmA mKIJ =@@KFJolAIIJD=n : Σ c/tࣘ . )n admission m=kAI IKHA JD=J JDA @A=@lEnAI oB =ll HA=l- JEmA FHo?AIIAI ?=n >A mAJ. 1n moIJ IOIJAmI, =@@EJEon=l HA=l- JEmA FHo?AIIAI =HA noJ =lloMA@ Jo >A IJ=HJA@ EB JDA =@mEIIEon JAIJ =ElI. )n =@mEIIEon JAIJ BoH IFoH=@E? FHo?AIIAI ?=n onlO >A m=@A EB JDA mEnEmKm EnJAHL=l oB JDA JHECCAH ALAnJI EI knoMn. 9A ?=ll JDEI JDA period oB JDA IFo­ H=@E?FHo?AII=n@,BoHJDA =@mEIIEonJAIJ,JHA=J EJ =I= FAHEo@E?FHo?AII. )IIKmEnCFHo?AIIAI?=n>A FHAAmFJA@ߟ JD=J EI,JDA ANA?KJEonoB = FHo?AII?=n>A JAm­ FoH=HElO IKIFAn@A@ Jo =lloM =noJDAH FHo?AII MEJD moHA KHCAnJ nAA@I Jo >A HKn ߟ JDA -=HlEAIJ-,A=@lEnA .EHIJ =lCoHEJDm EI oFJEm=l. 1n B=?J, EB t = d BoH =ll FHo?AIIAI, Σ c/tࣘ EI = IKBBE?EAnJ JAIJ. )@mEIIEon JAIJEnC =n@ I?DA@KlEnC CAJ moHA ?omFlE?=JA@ EB FHo?AIIAI ?omFAJA BoH HAIoKH?AI. 1nIoBJM=HA IOIJAmI,JDAIA HAIoKH?AI?=n>A ?HEJE?=l IA?JEonI,oHFAHEFDAH=lI. 6o EllKIJH=JA JDAIA ?omFlE?=JEonI, ?onIE@AH = loM-FHEoHEJO E.A., @A=@lEnA En JDA @EIJ=nJ BKJKHA FHo?AII JD=J o>J=EnI = lo?k. 6DAn = mA@EKm-FHEoHEJO E.A., @A=@lEnA En JDA nA=H BKJKHA FHo?AII EI HAlA=IA@ =n@ EJ FHAAmFJI JDA loM-FHEoHEJO onA. NANJ, = DECD-FHEoHEJO E.A., @A=@lEnA EmmEnAnJ FHo?AII EI HAlA=IA@. 1J FHAAmFJI JDA mA@EKm-FHEoHEJO FHo?AII =n@ =JJAmFJI Jo CAJ JDA lo?k JD=J JDA loM-FHEoHEJO FHo?AII Dol@I. 6DEI >lo?kI JDA DECD- FHEoHEJO FHo?AII KnJEl JDA lo?k EI HAlA=IA@. *KJ >ABoHA JDA loM- FHEoHEJO FHo?AII ?=n HAlA=IA JDA lo?k EJ D=I Jo HKn =n@ >ABoHA EJ HKnI, JDA mA@EKm-FHEoHEJO FHo?AII mKIJ CELA KFJDA FHo?AIIoH. 6DEI EI = ?l=IIE? AN=mFlA oB priority inversion: JDA loM- FHEoHEJO FHo?AII IDoKl@ HA?AELA = DECDAH FHEoHEJO JD=n JDA mA@EKm-FHEoHEJO FHo?AII KnJEl EJ CELAI KF JDA lo?k, Io JD=J JDA DECD-FHEoHEJOFHo?AIICAJIJoHKn=C=En=IIoon=IFoIIE>lA. Priority inheritance @oAI jKIJ JD=J: = FHo?AII Dol@EnC = lo?k HA?AELAI JDA FHEoHEJO oB JDA DECDAIJ-FHEoHEJOFHo?AIIM=EJEnCBoHEJ. 6o @o = I?DA@Kl=>ElEJO =n=lOIEI BoH = ?ollA?JEon oB HA=l-JEmA =n@ >AIJ-ABBoHJ FHo?AIIAI JD=J ID=HA ?AHJ=En HAIoKH?AI, onA nAA@I Jo knoM FAHEo@, @A=@lEnA =n@ ?oIJ BoH A=?D oB JDA HA=l- JEmA FHo?AIIAI. 1n =@@EJEon, BoH A=?D FHo?AII =n@ ?om>En=JEon oB HAIoKH?AI, FAHEo@ =n@ ?oIJ mKIJ >A knoMn =lIo. *AIJ-ABBoHJ FHo?AIIAI ID=HEnC HAIoKH?AI MEJD HA=l-JEmA FHo?AIIAI=HA JDKI@H=MnEnJoJDA I?DA@Kl=>ElEJO=n=lOIEIJoo. 9EJDJDEImEnEm=l >=?kCHoKn@EnHA=l-JEmA,JDA HAIJ oB JDA F=FAHIDoKl@>A HA=@=>lA.

1.2. Real time in a general purpose NoM lAJߣI CAJ FH=?JE?=l =n@ IAA MD=J o>IJ=?lAI JDAHA =HA Jo FKJJEnC Coo@ JDAoHO EnJo FH=?JE?A. 9A =HA >O no mA=nI JDA BEHIJ Jo @o JDEI. 6DAHA =HA GKEJA = BAM HA=l-JEmA IOI­ JAmI oKJ JDAHA. MoIJ oB JDAm =HA IFA?E=lEzA@ BoH Am>A@@A@ Fl=JBoHmI 8N9oHkI, 46O5, +=HHEAH-CH=@A LEnKN, AJ?.. 5omA IOIJAmI FHoLE@A HA=l-JEmA BKn?JEon=lEJO En = CAnAH=l- FKHFoIA oFAH=JEnC IOIJAm 46LEnKN, )1:, LOnNO5, AJ?.. 9D=J JAn@I Jo @EIJEnCKEID JDA l=JJAH BHom JDA BoHmAH EI JD=J JDA l=JJAH D=I @EBBAHAnJ FHo?AIIAI HKn En @EBBAHAnJ =@@HAII IF=?AI =n@ JD=J JDA oFAH=JEnC IOIJAm FHoLE@AI FHoJA?JEon oB onA FHo?AII =C=EnIJ JDA =??E@AnJ=l oHm=lE?EoKImEI>AD=LEoHoB =noJDAH. )noJDAH ?omFlE?=JEnC B=?JoH EI JD=J JDA ?ollA?JEon oB IOIJAm ?=llI =n@ oFAH=JEnC-IOIJAm IAHLE?AI =L=El=>lA Jo =FFlE?=JEonI EI KIK=llO noJ CA=HA@ JoM=H@I HA=l-JEmA =FFlE?=JEonI. 6DEI mA=nI JD=J, EB = HA=l-JEmA =FFlE?=JEon EnLokAI ?AHJ=En IOIJAm ?=llI oH oFAH=JEnC- IOIJAmIAHLE?AI,EJ m=OMAll mEIIEJI@A=@lEnA =I= HAIKlJ. ,ALE?A @HELAHI =n@ @ALE?A EnJAHHKFJI =HA =noJDAH IoKH?A oB FoJAnJE=l @A=@lEnA mEIIAI. 7IK=llO, oFAH=JEnC IOIJAmI @o noJ lEmEJ JDA BHAGKAn?O oB @ALE?A EnJAHHKFJI, noH JDA JEmA IFAnJ EnEnJAHHKFJ HoKJEnAI. ) BEn=l EmFlAmAnJ=JEon EIIKA EI JDA oLAHDA=@ oB JDA L=HEoKI mA?D=nEImI. O>LEoKIlO, = IMEJ?D BoHm onA FHo?AII Jo =noJDAH J=kAI JEmA, Io, MDAn JDAoHO I=OI JD=J = IAJ oB HA=l- JEmA FHo?AIIAI EI I?DA@Kl=>lA FHoLE@A@ Σ c/tࣘ , FH=?JE?A I=OI JD=J, =J JDA LAHO lA=IJ JDEI IDoKl@ >A Σ c + δ/t < ࢤε, BoH IomA FoIEJELA ε =n@ δ JD=J =HA onlO =FFHoNEm=JAlO knoMn ߞ ε >AEnC = JAHm Jo J=kA CAnAH=l IOIJAm oLAHDA=@ EnJo =??oKnJ, =n@ δ = JAHm Jo ANFHAII= loMAH>oKn@onJDA ?oIJ oB ?onJANJ- IMEJ?DEnCoLAHDA=@. *KJ JDEI EI IEmFlA HAl=JELA Jo JDA FHo>lAm oB MD=J Jo @o =>oKJ IOIJAm ?=llI, ?oIJ oLAHHKnI =n@ID=HA@HAIoKH?AI. 9Aߣll J=?klA JDAmonA =J = JEmA. 5OIJAm ?=llI ?=n ?=KIA =H>EJH=HO @Al=OI BoH JDA ?=llAH; HA=@EnC BHom = JAHmEn=l EI = Coo@ ?=IA En FoEnJ. OnA =FFHo=?D Jo @A=lEnC MEJD IOIJAm ?=llI EI Jo @ELE@A JDAm EnJo HA=l- JEmA ok=O =n@ HA=l-JEmA noJ-ok=O onAI =n@ Jo =lloM onlO JDA ok=O onAI En HA=l-JEmA =FFlE?=JEonI. 9DAJDAHJDEIEIKIABKl EI= m=JJAHoB oFEnEon. +oIJ oLAHHKnI =HA @EBBE?KlJ Jo @A=l MEJD. 1B = FHo?AII KIAI moHA JEmA JD=n HAIAHLA@, EJ m=O mEII EJI @A=@lEnA, >KJ EJ =lIo JDHA=JAnI oJDAH FHo?AIIAI Jo mEII JDAEHI. 6DA l=JJAH ?=n>A FHALAnJA@>OjK@E?EoKII?DA@KlEnC. 6DA BoHmAHFHAIAnJI= FHo>lAm En )21 @AIECn: 5DoKl@ JDA =FFlE?=JEon >A IJoFFA@ MDAn JDEI D=FFAnI @A=@lEnA mEII, ?oHA @KmFA@, IDoKl@ JDA =FFlE?=JEon HA?AELA = IECn=l 51/M155, oH IDoKl@ JDA =FFlE?=JEon >A HAIKmA@ =n@FAHD=FI>A noJEBEA@=J JDA nANJ HAlA=IA? )ll oB JDAIA IolKJEonI =HA D=H@ Jo FHoCH=m Jo BoH =n =FFlE?=JEon FHoCH=mmAH. O>LEoKIlO, = ?oIJ oLAHHKn EI = JEmEnC >KC =n@ EJ IDoKl@nߣJ D=FFAn, >KJ, En m=nO ?=IAI, EJ ?=n >A HA?oLAHA@ BHom, =lJDoKCD JDA HA?oLAHO EI =lmoIJ =lM=OI =FFlE?=JEon @AFAn@AnJ. 6DA IEC­ n=l mAJDo@ EI FHo>=>lO JDA moIJ ABBA?JELA =n@ JDA lA=IJ @EIHKFJELA. 1J CELAI JDA =FFlE?=­ JEonFHoCH=mmAH?DoE?AIBoHDoM JoHA?oLAH. 5D=HA@ HAIoKH?AI En HA=l-JEmA =FFlE?=JEonI ?=n >A ID=HA@ @=J= IJHK?JKHAI, ID=HA@ BElAI oH @ALE?AI, oH ALAn HAIoKH?AI IK?D =I JDA IF=?A >AJMAAn JMo Ho>oJI on =n =IIAm>lO lEnA; EB onA Ho>oJ EI MoHkEnC En JD=J IF=?A, JDA oJDAH IDoKl@nߣJ AnJAH EJ. 1n =ll ?=IAI, JDA HAIoKH?A ?=n >A HAFHAIAnJA@ >O = lo?k JD=J EI =?GKEHA@ =n@ HAlA=IA@ =I JDA ID=HA@ HAIoKH?A EI=?GKEHA@=n@HAlA=IA@. Lo?kI D=LA LAHO ABBE?EAnJ EmFlAmAnJ=JEonI En ID=HA@ mAmoHO: = JAIJ-=n@-IAJ 6)5 oH ?omF=HA-=n@-IM=F +)5 EnIJHK?JEon ߟ =J lA=IJ onA oB MDE?DEI=L=El=>lA onFHAJJOmK?D ALAHO mo@AHn KnEFHo?AIIoH oH mKlJEFHo?AIIoH ߟ @oAI JDA >=IE? JHE?k nE?AlO. 1n ?=IAI MDAHA JDA lo?k ?=nnoJ >A =?GKEHA@, = FHo?AII MEll D=LA Jo M=EJ KnJEl EJ EI HAlA=IA@. *KIO M=EJEnC EI KIK=llO Joo ANFAnIELA, Io = IlAAF/M=kAKF mA?D=nEIm EI KIK=llO AmFloOA@ Jo =lloM JDA FHo?AII HAlA=IEnC JDA lo?k Jo >HEnC JDA FHo?AII M=EJEnC BoH EJ >=?k Jo ?on­ I?EoKInAII. 0oMALAH, lo?kEnC ?onBlE?JI =HA KIK=llO noJ JD=J BHAGKAnJ =n@ EmFlAmAnJ=­ JEonI ?=n =n@ D=LA >AAn ?on?AELA@ Jo =LoE@ J=kEnC IOIJAm ?=llI KnlAII JDAHA EI ?onJANJ- IMEJ?DEnCMoHk Jo@o. 1n HA=l-JEmA IOIJAmI, =ll JDEI ?D=nCAI, >A?=KIA JDA FHEoHEJEAI oB HA=l-JEmA =n@ >AIJ- ABBoHJ FHo?AIIAI ?D=nCA =I JDAO =?GKEHA =n@ HAlA=IA HAIoKH?AI MDE?D lA=@I Jo FoJAnJE=l ?onJANJ IMEJ?DEnC. 6DKI, ALAn JDA IEmFlA =?J oB lo?kEnC = ID=HA@ @=J= IJHK?JKHA HAGKEHAI = IOIJAm?=ll MDAnJDA @=J= IJHK?JKHA EIKIA@>O=J lA=IJ onA HA=l-JEmA FHo?AII.

2. Application Programmer’s Interface 2l=n ' EI FHo>=>lO moIJ B=moKI BoH KIEnC BElA IOIJAmI BoH EJI ?lEAnJ-IAHLAH EnJAHB=?AI. 4A=l-JEmA EI no AN?AFJEon. 2l=n ' FHo?AIIAI =HA =lHA=@O m=n=CA@ l=HCAlO JDHoKCD = BElA IOIJAm EnJAHB=?A, noHm=llO lo?=JA@ En JDA @EHA?JoHO /FHo?, @AI?HE>A@ En JDA 2l=n ' m=n­ K=l[ ], En proc!. ) FHo?AII MEJD FHo?AII 1, FE@ ?=n >A IJoFFA@, kEllA@, oH @A>KCCA@ JDHoKCD JDA L=HEoKI BElAI En JDA @EHA?JoHO /proc/pid. .oH EnIJ=n?A, MHEJEnC JDA IJHEnC  Jo /proc/pid/ctl,MEll kEll JD=J FHo?AII. 9A ANJAn@A@ JDEI EnJAHB=?A >O =@@EnC ?omm=n@I Jo HACKl=JA JDA HA=l-JEmA >AD=LEoH oB FHo?AIIAI. 5?DA@KlEnCEnBoHm=JEonEICELAn>OMHEJEnCIJHEnCIoB JDA BoHm period tµs deadline dµs cost cµs sporadic Jo JDA FHo?AIIߣ ?onJHol BElA. 7nEJI ?=n >A nI, µI, mI, oH I. 6DA IFoH=@E? ?omm=n@ En@E­ ?=JAI JD=J HAlA=IA oB JDA FHo?AII EI CoLAHnA@ >O ANJAHn=l ALAnJI =n@ JD=J, JDAHABoHA, JDA FHo?AII @oAI noJ nA?AII=HElO HKn = HACKl=H EnJAHL=lI. 6DA period oB = IFoH=@E? FHo?AII EI JDA mEnEmKm =moKnJ oB JEmA >AJMAAn ?onIA?KJELA HAlA=IAI; E.A., EB JDA ANJAHn=l HAlA=IA o??KHI A=HlEAH, JDA =?JK=l HAlA=IA EI @Al=OA@. 9DAn =ll F=H=mAJAHI D=LA >AAn IFA?EBEA@, JDA ?omm=n@ =@mEJ EI MHEJJAn Jo JDA ?onJHol BElA. 1B JDEI MHEJA IK??AA@I, JDA FHo?AII MEll DAn?ABoHJD >A I?DA@KlA@ =I = HA=l-JEmA FHo?AII. 1B JDA =@mEIIEon JAIJ B=ElI, AEJDAH >A?=KIA oB ?onBlE?JEnC HA=l-JEmA IAJJEnCI, oH >A?=KIA JDAHA =HA EnIKBBE?EAnJ HAIoKH?AI, JDA MHEJA B=ElIHAJKHnEnCJDA HA=IonBoHB=ElKHA EnJDA AHHoHIJHEnC. 6DA Coo@ JDEnC =>oKJ JDEI EnJAHB=?A EI JD=J EJ =lloMI HA=l- JEmA I?DA@KlEnC FHo?AIIAI BHomEnIE@A JDoIA FHo?AIIAI,BHomoJDAHFHo?AIIAI,oHBHomJDA ?omm=n@-lEnA EnJAHB=?A. On?A = FAHEo@E? FHo?AII EI I?DA@KlA@ En HA=l JEmA, (0) MEll IKIFAn@ JDA FHo?AII KnJEl JDA nANJ HAlA=IA. ) IFoH=@E? FHo?AII MEll >A IKIFAn@A@ on AnJAHEnC =nO >lo?kEnC IOIJAm ?=ll =n@ >A HAlA=IA@ MDAn >oJD JDA IOIJAm ?=ll HAJKHnI =n@ = FAHEo@ D=I Al=FIA@ IEn?A JDA l=IJ HAlA=IA. 1B JDA yieldonblock ?omm=n@ D=I >AAn CELAn, FAHEo@E? FHo­ ?AIIAIMEll =lIoCELA KFJDA +27 KnJEl JDA nANJ HAlA=IA MDAnALAH = >lo?kEnC IOIJAm ?=ll EI EnLokA@. 1B = FAHEo@E? FHo?AII >lo?kI on = IOIJAm ?=ll, EJ IJoFI ?onIKmEnC +27 HAIoKH?AI KnJEl JDA IOIJAm ?=ll An@I. 0oMALAH, =nO JAmFoH=HO >lo?kEnC m=O ?=KIA = @A=@lEnA mEII. 1B = FHo­ ?AIIEI>lo?kA@=J JDA @A=@lEnA,EJ MEll >A HAIKmA@noA=HlEAHJD=n=J JDA nANJ HAlA=IA.

3. Real Time Implementation in Plan 9 9A EmFlAmAnJA@ = HA=l-JEmA I?DA@KlAH En 2l=n ', Io JD=J MA ?oKl@ KIA 2l=n ' =I = LADE­ ?lA BoH ANFAHEmAnJ=JEon MEJD Am>A@@A@ IOIJAmI, En F=HJE?Kl=H, >=IA IJ=JEonI BoH MEHAlAII nAJMoHkI. 6DA EnEJE=l EmFlAmAnJ=JEon [!] FHoLE@A@ I?DA@KlEnC BoH HA=l- JEmA FHo?AIIAI MEJD ID=HA@ HAIoKH?AI. 6DA ?KHHAnJ EmFlAmAnJ=JEon no lonCAH D=I FHoLEIEonI BoH ID=HA@ HAIoKH?AI =lJDoKCD JDAO ?oKl@ A=IElO >A >HoKCDJ >=?k. 6DEI F=FAH ANFl=EnI =n@ jKIJEBEAI oKH @AIECn=n@@EI?KIIAIoKHANFAHEAn?A MEJDJDA EmFlAmAnJ=JEon.

3.1. Kernel Locks 6DA 2l=n ' kAHnAl KIAI = IAJ oB GKAKAI oB HKnn=>lA FHo?AIIAI, onA BoH A=?D FHEoHEJO lALAl JDAHA =HA . 1J M=I = IEmFlA m=JJAH Jo =@@ JMo moHA GKAKAI, onA BoH =?JELA HA=l-JEmA FHo?AIIAI =n@ onA BoH HA=l-JEmA FHo?AIIAI JD=J D=LA >AAn HAlA=IA@ >KJ D=LA noJ OAJ >AAn I?DA@KlA@. 6DA I?DA@KlAH, lookEnC BoH = FHo?AII Jo HKn, MoKl@ I?=n JDA GKAKAI En oH@AH =n@ FE?k JDA BEHIJ FHo?AII An?oKnJAHA@ on =nO GKAKA. 9EJD JDA JMo nAM GKAKA AnJHEAI,JDA I?DA@KlAHBEHIJ lookIBoHHA=l-JEmA FHo?AIIAI. 6DA M=O kAHnAl lo?kI MAHA D=n@lA@ D=@ Jo >A ?D=nCA@. 6DAHA =HA, En B=?J, JDHAA kEn@I oB kAHnAl lo?kI, JDAO =HA ?=llA@ ilock, lock, =n@ qlock. LockI =HA IFEn lo?kI: Jo =?GKEHA JDA lo?k, = test−and−set on JDA lo?k BEAl@ EI HAFA=JA@ KnJEl EJ IK??AA@I. )n ilock >AD=LAI lEkA lock, AN?AFJ BoH JDA FHo?AIIoH FHEoHEJO MDE?D EI H=EIA@ Jo @EI=lloM EnJAHHKFJI KnJEl JDA Elo?k EI HAlA=IA@. 1nJAHHKFJ HoKJEnAI m=O noJ =?GKEHA HACKl=H lo?kI, >A?=KIA JDA FHo?AII JDAO EnJAHHKFJA@ m=O D=LA >AAn Dol@EnC EJ, JDKI lA=@EnC Jo @A=@­ lo?k. *KJ EnJAHHKFJ HoKJEnAI ?=n I=BAlO =?GKEHA ilockI, >A?=KIA >O JDA M=O JDAO MoHk, =n EnJAHHKFJ HoKJEnA ?=n nALAH EnJAHHKFJ JDA FHo?AII Dol@EnC onA. 1n B=?J, on = KnEFHo­ ?AIIoH, EJ EI EmFoIIE>lA Jo D=LA Jo M=EJ BoH =n ilock. Ilocks =HA oB lEJJlA ?on?AHn Jo JDA I?DA@KlAH, >A?=KIA FHo?AIIEnC Dol@EnC JDAm ?=nnoJ >A EnJAHHKFJA@ =n@, JDAHABoHA, JDAO?=nnoJ >A FHAAmFJA@. Qlocks =HA lo?kI MEJD = GKAKA oB M=EJEnC FHo?AIIAI =JJ=?DA@ Jo JDAm. 1B = qlock ?=n noJ >A o>J=EnA@, = FHo?AII =JJ=?DAI EJIAlB Jo JDEI GKAKA =n@ ?=llI sleep(). 9DAn = FHo?AII CELAI KF = qlock, EJ ?=llI wakeup() BoH A=?D oB JDA M=EJEnC FHo?AIIAI En JDA GKAKA. *A?=KIA EB JDEI >AD=LEoH, =nO IOIJAm ?=ll JD=J EnLokAI qlock MEll AEJDAH ?=KIA = @A=@lEnA mEII FHoCH=mmEnC AHHoH oH EI EnJAnJEon=llO KIA@ Jo M=EJ BoH =n ALAnJ. 7nlEkA lock =n@ ilock,JDAOHA?AELA noIFA?E=l =JJAnJEonBoHHA=l-JEmA I?DA@KlEnC. 6DEIjKIJ lA=LAIHACKl=Hlo?kI. 6DA FHA-HA=l-JEmA 2l=n ' kAHnAl MoKl@, MDAn = FHo?AII >lo?kA@ on = lo?k, loMAH EJI FHEoHEJO Jo JDA loMAIJ lALAl =n@ =@@ EJ Jo = lEIJ oB M=EJEnC FHo?AIIAI =JJ=?DA@ Jo JDA lo?k. 7Fon HAlA=IA oB JDA lo?k, =ll M=EJEnC FHo?AIIAI MoKl@ >A HAIJoHA@ Jo JDAEH ol@ FHEoHEJO =n@>A =lloMA@Jo?omFAJA BoHJDA lo?k. 6DEI, o>LEoKIlO, @E@ noJ MoHk BoH HA=l-JEmA FHo?AIIAI. 6o@=O, JDA 2l=n ' kAHnAl MEll noJ I?DA@KlA = FHo?AII Dol@EnC = lo?k KnJEl JD=J FHo?AII CELAI EJ KF. -=?D FHo?AII m=EnJ=EnI = ?oKnJ oB JDA nKm>AH oB lo?kI EJ Dol@I. 9DAn = FHo?AII Dol@EnC lo?kI mKIJ >A FHA­ AmFJA@, = Bl=C EI IAJ En EJI FHo?AII IJHK?JKHA. 9DAn JDA FHo?AII HAlA=IAI EJI l=IJ lo?k, EJ AN=mEnAIJDEIBl=C=n@,EB EJ EIIAJ,MEll EnLokA JDA I?DA@KlAH=C=En. 1J EI = kAHnAl FHoCH=mmEnC AHHoH Jo =lloM FHo?AIIAI Jo HAJKHn Jo KIAH IF=?A MEJD = lo?k DAl@ HAmAm>AH, MA =HA J=lkEnC =>oKJ kAHnAl lo?kI; lEkAMEIA, EJ EI =n AHHoH Jo =lloM = FHo?AII Jo IlAAF M=EJ BoH =n ALAnJ MEJD = lo?k DAl@. 8=HEoKI =IIAHJEonI En JDA kAHnAl ?DA?k BoH LEol=JEonI oB JDEI EnL=HE=nJ. )I = HAIKlJ, HA=l-JEmA FHo?AIIAI =HA I?DA@KlA@ MEJD no moHA ANJH= @Al=O JD=n JDA JEmA EJ J=kAI BoH JDA FHALEoKIlO HKnnEnC FHo?AII Jo CELA KF EJIlo?kI. 6o mA=IKHA JDEI ANJH= l=JAn?O, MA EnIJHKmAnJA@ oKH kAHnAl locks =n@ ilocks Jo IAA MD=J l=JAn?O JDAO ?=KIA. 9A BoKn@ JD=J no lo?kI oB AEJDAH JOFA =HA DAl@ BoH moHA JD=n =>oKJ  µI on JDA ! M0z 2oMAH2+ JD=J MA KIA BoH oKH MEHAlAII >=IA- IJ=JEon ANFAH­ EmAnJIMEJDJDA EnIJHKmAnJ=JEonEJIAlB >AEnCHAIFonIE>lA BoH=>oKJ #nI. 6o =lloM moHA FHA?EIA HA=l-JEmA I?DA@KlEnC, MA IJ=HJA@ Jo FHoCH=m JDA ?lo?k Jo CELA EnJAHHKFJI AN=?JlO MDAn I?DA@KlEnC ALAnJI HAlA=IA, @A=@lEnA, oH An@ oB +27 IlE?A IDoKl@ o??KH. 6o m=EnJ=En JH=?k oB M=ll-?lo?k JEmA, MA KIA = IA?on@ ?lo?k FHAIAnJ on moIJ =H?DEJA?JKHAI Jo CELA EnJAHHKFJI =J HACKl=H EnJAHL=lI JD=J MA KIA BoH ?oKnJEnC JDA mEllEIA?on@I. 6DA FHoCH=mm=>lA JEmAH KIAI = lEnkA@ lEIJ oB FHoCH=mmA@ JEmAH ALAnJI, IoHJA@ >O JEmA. 6DA BEHIJ JEmAH Jo Co oBB EI =J JDA DA=@ oB JDA lEIJ. 9DAn = JEmAH EnJAHHKFJ o??KHI, JDA lEIJ EI FHo?AIIA@ BoH JEmAHI JD=J D=LA ANFEHA@. 6EmAHI ?=n >A onA IDoJ, oH FAHEo@E?. 2AHEo@E? JEmAHI=HA FKJ >=?k onJDA lEnkA@lEIJ =BJAHFHo?AIIEnC.

4. Programming Real−Time Applications 6DA JDEnC JD=J EI D=H@ =>oKJ MHEJEnC HA=l-JEmA =FFlE?=JEonI EI JDA EnJAH=?JEon MEJD JDA AnLEHonmAnJ. MoIJ KIABKl HA=l-JEmA =FFlE?=JEonI =HA mKlJEJDHA=@A@ =n@ ID=HA mAmoHO =n@ HAIoKH?AI MEJD non-HA=l-JEmA FHo?AIIAI oH HA=l-JEmA FHo?AIIAI MEJD @EBBAHAnJ FAHE­ o@I=n@@A=@lEnAI. )monC JDA moIJ @EBBE?KlJ EnJAH=?JEonI MEJD JDA AnLEHonmAnJ =HA JDA HA=l-JEmA FHo?AIIߣ EnJAH=?JEon MEJD JDA oFAH=JEnC IOIJAm =n@ IAHLE?AI ?onJ=EnA@ En lE>H=HEAI. 6DAIA =HA KIK­ =llOIFA?EBEA@onlOEnJAHmIoB MD=J JDAOALAnJK=llO@o,noJ EnJAHmIoB MDAnJDAO@oEJ. ) Coo@ ߟ =n@ BHKIJH=JEnC ߟ ?=IA En FoEnJ EI @On=mE? mAmoHO =llo?=JEon. OnA JDEnkI oB malloc() =n@ free() =I HoKJEnAI JD=J EnIJ=nJlO =llo?=JA =n@ BHAA mAmoHO. 1n FH=?­ JE?A, JDAO HAGKEHA lo?kI Jo FHoJA?J =C=EnIJ H=?A ?on@EJEonI En mKlJEJDHA=@A@ =FFlE?=JEonI. 6DEI m=kAI JDA KIA oB JDAIA ?=llIEnmKlJEJDHA=@A@HA=l-JEmA =FFlE?=JEonI@=nCAHoKI:JDA HA=l-JEmA FHo?AII m=O M=IJA EJI AnJEHA +27 IlE?A >O IFEnnEnC on = lo?k DAl@ >O = non- HA=l-JEmA FHo?AIIJD=J EInoJ =lloMA@JoHKn. 6DEI IoHJ oB JDEnC ?oKl@ >A IolLA@ >O KIEnC = moHA EnJAllECAnJ lo?kEnC mAJDo@, >KJ JD=J MoKl@ HAGKEHA IECnEBE?=nJ oLAHDA=@ En lAJJEnC JDA I?DA@KlAH knoM MD=J lo?kI =HA DAl@/HAGKEHA@ =n@ EnLolLEnC =ll non-HA=l-JEmA FHo?AIIAI JD=J KIA lo?kI En JDA I?DA@Kl=­ >ElEJO=n=lOIEI. 9A JHEA@ CoEnC JDEI HoKJA EnEJE=llO, >KJ C=LA EJ KF. 6DA oLAHDA=@ EI Joo l=HCA =n@ JDA IFA?EBE?=JEonoB JDA HA=l-JEmA >AD=LEoHoB =ll ?HEJE?=l IA?JEonIM=I=nEmFoIIE>lA J=Ik. OKH =FFHo=?D D=I >A?omA Jo H=@E?=llO Co JDA oJDAH HoKJA: =ll EnJAH=?JEonI MEJD JDA AnLE­ HonmAnJ =LoE@HAIoKH?AIJD=J HAGKEHA AN?lKIELA =??AII. 9A BoKn@ JD=J MA ?oKl@ CAJ =lonC FAHBA?JlO MEJD jKIJ JDHAA mA?D=nEImI BoH m=n=CEnC ID=HA@ HAIoKH?AI. 6DAO =HA @AI?HE>A@ En JDA nANJ JDHAA IK>IA?JEonI. 3KAKAI ) CHA=J @A=l oB ?ommKnE?=JEon >AJMAAn = HA=l-JEmA FHo?AII =n@ =noJDAH nA?AII=HElO D=I Jo Co JDHoKCD IomA IoHJ oB >KBBAH Jo =lloM = IOn?DHonoKI =n@ non-IOn?DHonoKI AnLEHonmAnJ Jo AN?D=nCA EnBoHm=JEon. ) GKAKA EI JDA JOFE?=l Am>o@EmAnJ oB = >KBBAH En = ?omFKJAH =FFlE?=JEon. 3KAKAI ?=n IEmFlO >A m=@A non->lo?kEnC, FHoLE@A@ JDAHA EI AN=?JlO onA FHo@K?AH FHo­ ?AII =n@ onA ?onIKmAH FHo?AII. 6DA =JomE?EJO oB Fl=?EnC =n EJAm on JDA GKAKA oH HAmoLEnC onA BHom JDA GKAKA EI HA=lEzA@ >O JDA =JomE?EJO oB HA=@EnC =n@ MHEJEnC =lECnA@ MoH@I En mAmoHO. MoIJ mo@AHn ?omFKJAHI D=LA ! ->EJ EnJACAHI JD=J D=LA JDEI FHoFAHJO,ALAnonID=HA@- mAmoHOmKlJEFHo?AIIoHI. 6DA HoKJEnAIJoAnGKAKA =n@@AGKAKA =HA IDoMnEn.ECKHA .

typedef struct Q Q; struct Q{ int produced, consumed, mask; void *data[0]; };

int qproduce(Q *q, void *x) { if(q−>produced − q−>consumed > q−>mask) return 0;

q−>data[q−>produced & q−>logmask] = x; q−>produced++; return 1; }

void * qconsume(Q *q) { void *x;

if (q−>produced == q−>consumed) return nil;

x = q−>data[q−>consumed & q−>logmask]; q−>consumed++; return x; }

Figure 2 1mFlAmAnJ=JEonoB=non->lo?kEnCGKAKA

6DA FHo@K?AH HA=@I JDA L=HE=>lA q−>consumed MDE?D EI MHEJJAn >O JDA ?onIKmAH. 1B JDA ?onIKmAH mo@EBEAI JDEI L=HE=>lA jKIJ =BJAH JDA FHo@K?AH D=I HA=@ EJ, >KJ >ABoHA JDA FHo@K?AH D=I D=@ JDA oFFoHJKnEJO Jo =?J on EJ, no D=Hm EI @onA: *O KF@=JEnC q−>consumed, JDA ?onIKmAH onlO ?HA=JA@ moHA Hoom En JDA GKAKA BoHJDA FHo@K?AHJo KIA. ) IOmmAJHE?=HCKmAnJ Dol@IBoHJDA ?onIKmAH=n@ q−>produced. 9A =lloM q−>produced =n@ q−>consumed Jo ?oKnJ JDA JoJ=l nKm>AH oB EJAmI ALAH FHo@K?A@ oH ?onIKmA@ MEJDoKJ HAIAJJEnC EJ MDAn JDA An@ oB JDA GKAKA EI HA=?DA@; JDKI, KF@=JEnC JDAIA L=HE=>lAI EI =lM=OI =JomE?. 9DAn onA oB JDA L=HE=>lAI MH=FI =HoKn@ =n@ >A?omAI nAC=JELA, JDA @EBBAHAn?A >AJMAAn JDA JMo EI IJEll JDA nKm>AH oB EJAmI ?KHHAnJlO EnJDA GKAKA,JD=nkIJo ߣI-?omFlAmAnJ =HEJDmAJE?. 6DAIA HoKJEnAI =HA noJ mAHAlO =JomE? =n@ JDKI @A=@lo?k =n@ H=?A-?on@EJEon BHAA, JDAO =HA =lIomK?DmoHA ABBE?EAnJ JD=n=nOmAJDo@KIEnClo?kI. 6DA onlO @oMnIE@A EI JD=J JDAHA ?=n >A onlO onA ?onIKmAH =n@ onA FHo@K?AH FAH GKAKA. *KJ JDEIJAn@IJo>A JDA ?=IA =nOM=O. *KJ noJ =lM=OIߪ .oH @A>KCCEnC JDA HA=l-JEmA AnLEHonmAnJ MA KIA, MA D=LA oFJEon=l FHEnJ IJ=JAmAnJI. 6DAIA, oB ?oKHIA, =BBA?J JDA HA=l-JEmA >AD=LEoH, Io oKH FHEnJI =HA GKAKA@ BoH = non- HA=l-JEmA FHo?AII JDA HAFoHJAH Jo FHEnJ JDAm =J EJI lAEIKHA. 9A D=LA IALAH=l HA=l- JEmA =n@ non-HA=l-JEmA FHo?AIIAI =n@ JDAO =ll @o JDAEH HAFoHJEnC Jo JDA HAFoHJAH FHo?AII. *KJ JDAIA FHo?AIIAI mKIJ =ll KIA IAF=H=JA GKAKAI, Io JDA HAFoHJAH mKIJ I?=n, =n@ HA=@ BHom,mKlJEFlA GKAKAI. 6DEIEInoJ ?omFlE?=JA@>KJ EJ D=IJo>A JDoKCDJ =>oKJ.

4.1. Free lists )I =HCKA@, HA=l-JEmA =FFlE?=JEonI mKIJ =LoE@ KIEnC lo?kI =n@ mKIJ JDAHABoHA >A ?=HABKl =>oKJ KIEnC @On=mE? mAmoHO =llo?=JEon. 1n oKH HA=l-JEmA =FFlE?=JEon, MA JAn@ Jo FHA=l­ lo?=JA JDA >KBBAHI MA =HA lEkAlO Jo nAA@ =n@ MA =llo?=JA JDAm BHom = lEnkA@ lEIJ. )BJAH KIA, JDAO =HA Fl=?A@ >=?k on JDEI lEnkA@ lEIJ. M=nO >KBBAHI =HA JH=nIBAHHA@ >AJMAAn FHo­ ?AIIAI, Io JDA FHo?AII =llo?=JEnC = >KBBAH m=O noJ >A JDA I=mA onA JD=J BHAAI EJ l=JAH on. 6DA I=lEAnJ FoEnJ =>oKJ = lEnkA@ lEIJ Dol@EnC BHAA >KBBAHI EI JD=J >KBBAHI on JDA BHAA lEIJ D=LA no E@AnJEJO oB EmFoHJ=n?A: onA ?=n =lM=OI =llo?=JA JDA >KBBAH =J JDA DA=@ oB JDA lEIJ =n@ onA ?=n =lM=OI @A=llo?=JA = >KBBAH >O Fl=?EnC EJ =J JDA DA=@ oB JDA lEIJ EB >KBBAHI oB @EBBAHAnJ IEzAI=HA KIA@,onA KIAI= @EBBAHAnJ lEnkA@lEIJ BoHA=?DIEzA. )JomE?=llO @A=llo?=JEnC BHom = lEnkA@ lEIJ ?=n >A @onA KIEnC = +omF=HA-=n@-5M=F +)5 EnIJHK?JEon, MDE?D EI FHAIAnJ on =ll ?KHHAnJ FHo?AIIoHI 1 knoM =n@ ?AHJ=EnlO on =ll JDoIA JD=J HKn 2l=n '. 6DA +)5 EnIJHK?JEon J=kAI JDHAA =HCKmAnJI, = FoEnJAH, =n ol@ L=lKA =n@ = nAM L=lKA. 1B JDA FoEnJAH FoEnJI Jo = L=lKA AGK=l Jo JDA ol@ L=lKA, EJ HAFl=?AI EJ >OJDA nAM. 6DA JAIJ =n@JDA HAFl=?AmAnJ =HA @onA =JomE?=llO.

Block * allocb(Block *list) { Block *b;

do if((b = list) == nil) error("out of blocks!"); while(!cas(&list, b, b−>next)); b−>next = nil; return b; }

void freeb(Block *list, Block *b) { do b−>next = list; while(!cas(&list, b−>next, b)); }

Figure 3 1mFlAmAnJ=JEonoB=JomE?lEnkA@-lEIJoFAH=JEonI

6DEI IKCCAIJI = IEmFlA EmFlAmAnJ=JEon BoH =JomE? =llo?=JA =n@ BHAA MDE?D EI IDoMn En .ECKHA!. 6DAHA EI = JDHA=J oB IJ=HL=JEon DAHA, >KJ MA >AlEALA JDEI EI onlO JDAoHAJE?=l En n=JKHA: JDAHA EI no mA?D=nEIm En JDA oFAH=JEon JD=J ?oKl@ ?=KIA FHo?AIIAI Jo CAJ En lo?k IJAF, ALAn on = mKlJEFHo?AIIoH MDAHA JMo FHo?AIIAI ?oKl@, JHKlO ?on?KHHAnJlO, >A BECDJ­ EnCoLAHJDA =llo?=JEonoB = >lo?k.

4.2. Semaphores 9DAn non-HA=l-JEmA FHo?AIIAI =HA M=EJEnC BoH @=J=/oKJFKJ/=JJAnJEon BHom = HA=l-JEmA FHo?AII, JDAO ?=n AEJDAH Foll BoH =n ALAnJ, oH >KIO-M=EJ BoH EJ, oH Co Jo IlAAF KnJEl JDAO =HA =M=kAnA@ >O JDA HA=l-JEmA FHo?AII. 6DA l=JJAH oB JDAIA JDHAA EI, oB ?oKHIA, JDA onlO AlAC=nJ M=O =n@ 2l=n ' JH=@EJEon=llO @A=lI MEJD JDEI JDHoKCD JDA KIA oB +D=nnAlI En JDA JDHA=@ lE>H=HO, oH >O KIEnC JDA HAn@AzLoKI IOIJAm ?=ll IAA   =n@ rendezvous  En[ ]. NAEJDAHoB JDAIA MoHkI,>A?=KIA >oJDm=O>lo?k JDA HA=l-JEmA FHo?AII. 9A =@@A@ IOIJAm ?=llI BoH m=nEFKl=JEnC ?oKnJEnC IAm=FDoHAI, IAm=?GKEHA =n@ IAmHAlA=IA JD=J CK=H=nJAA JD=J JDA ?=llAH oB IAmHAlA=IA nALAH >lo?kI. ) ?=llAH oB IAm=?GKEHA >lo?kI MDAn JDA L=lKA oB JDA IAm=FDoHA D=I HA=?DA@ zAHo. 6DA ?=llAH ?on­ JEnKAIMDAn= ?=ll JoIAmHAlA=IA D=Im=@A JDA L=lKA FoIEJELA =C=En.

5. Experience 9A KIA@ JDEI HA=l-JEmA EnBH=IJHK?JKHA =J *All L=>I Jo >KEl@ = HAIA=H?D MEHAlAII >=IA IJ=­ JEon JD=J MA D=LA >AAn KIEnC BoH ANFAHEmAnJI MEJD FHoJo?olI =n@ mA=IKHAmAnJI. 5omA oB JDA H=@Eo D=H@M=HA MAߣLA >AAn KIEnC @Am=n@A@ = D=H@-HA=l-JEmA IOIJAm: mEIIEnC = mI @A=@lEnA MoKl@ BoH?A KI Jo HA>ooJ JDA H=@Eo noJ CHA=J D=H@M=HA @AIECn, >KJ JD=J D=FFAnIEnHAIA=H?D. MoIJ oB JDA =FFlE?=JEon FHoCH=mmEnC JA?DnEGKAI BoH HA=l- JEmA MAHA @ALAloFA@ FAHBA?J­ EnC JDEI =FFlE?=JEon. +KHHAnJlO, EJ IFoHJI BoKH HA=l-JEmA FHo?AIIAI, onA JD=J @HELAI JDA D=H@M=HA =n@ JDA FHoJo?ol IJ=?k JDA AnCEnA, FAHEo@E? =J mI, MEJD = mI +27 =llo?=­ JEon, JMo JD=J, HAIFA?JELAlO, m=n=CA JDA -JDAHnAJ EnFKJ =n@ oKJFKJ GKAKAI BoH JDA IJ=?k JDA >=?kD=Kl m=n=CAHI, IFoH=@E? =J mI MEJD = µI +27 =llo?=JEon, =n@ onA JD=J @oAI JDA FHEnJEnC oB @A>KCCEnC oKJFKJ JDA HAFoHJAH, FAHEo@E? =J mI MEJD = "µI +27 =llo?=JEon. 1n =@@EJEon, MA D=LA >AIJ-ABBoHJ FHo?AIIAI m=n=CEnC JDA m=n=CAmAnJ EnJAH­ B=?A JDA BElA IAHLAH, = 2l=n ' BElA IOIJAm, oB ?oKHIA =n@ = IAF=H=JA =FFlE?=JEon 74M KIEnCJDEIEnJAHB=?A Jom=n=CA =n@?onBECKHA JDA MEHAlAII?onnA?JEonI. 6DAHA =HA JDHAA BHAA lEIJI, onA BoH -JDAHnAJ-F=?kAJ-IEzA@ >lo?kI, onA BoH H=@Eo- JH=nImEIIEon-IEzA@ >lo?kI, =n@ onA BoH ?omm=n@ >lo?kI AN?D=nCA@ MEJD JDA H=@EoD=H@­ M=HA. 6DAHA =HA =JomE? GKAKAI >AJMAAn JDA >=?kD=Kl m=n=CAHI =n@ JDA AnCEnA, GKAKAI >AJMAAn A=?D FHo?AII =n@ JDA HAFoHJAH, =n@ GKAKAI >AJMAAn JDA BElA IAHLAH =n@ JDA AnCEnA. 6DA BElA IAHLAH EI mKlJEJDHA=@A@ =n@ D=I = JDHA=@ BoH A=?D oKJIJ=n@EnC oFAH=JEon. 5omA oFAH=JEonI >lo?k, M=EJEnC BoH = HAIFonIA BHom JDA AnCEnA, oH BHom JDA H=@Eo D=H@M=HA. 6DAIA BElA IAHLAH JDHA=@I KIA IAm=FDoHAI =I JDA IlAAF/M=kAKF mA?D=nEIm MEJD JDA AnCEnA =IJDA M=kAHKFFAH. 6DA MDolA =FFlE?=JEon EI IomA K lEnAI oB ?o@A =n@ HKnI on 2l=n ', MDE?D M=I FoHJA@ Jo = 2oMAH2+ FHo?AIIoH on JDA >=IA IJ=JEon. 1J Jook KI = MDElA >ABoHA MA @ALAloFA@ JDA HA=l- JEmA FHoCH=mmEnC JA?DnEGKAI MA noM KIA. )I MA EmFHoLA@ oKH JA?DnEGKAI, MA IJ=HJA@ mEIIEnC BAMAH =n@ BAMAH @A=@lEnAI. -=HlO @A=@lEnA mEIIAI MAHA =lmoIJ =lM=OI ?=KIA@ >O >lo?kEnC on lo?kI, KIK=llO En KIAH IF=?A, IFoH=@E?=llO En JDA kAHnAl. 9A An@A@ KF EnIJHKmAnJEnC JDA KIAH-IF=?A lo?kI MEJD =IIAHJ IJ=JAmAnJI JAIJEnC MDAJDAH JDA ?=ll­ EnCFHo?AIIM=IHA=l JEmA.MoIJ oB JDA JHECCAHIMAHA m=llo??=llIEnKnANFA?JA@Fl=?AI. 7IEnC = HAFoHJAH FHo?AII Jo @o JDA FHEnJEnC oB =nO @A>KCCEnC MoHkI LAHO MAll. -=?D HAFoHJ D=I = JEmA IJ=mF =n@ JDA HAFoHJAH I?=nI EJI EnFKJ GKAKAI Jo FHEnJ JDA HAFoHJI En JEmA- IJ=mFoH@AH. 9A >HEABlO ANFAHEmAnJA@ MEJD = non->lo?kEnC mKlJE- ?onIKmAH/mKlJE-FHo@K?AH GKAKA >KJ C=LA KF. 6DA EmFlAmAnJ=JEon M=I Joo ?omFlE?=JA@ Jo m=EnJ=En. 7n@AHIJ=n@EnC JD=J ?o@A HAm=EnA@ D=H@. OnA FHo>lAm MEJD IK?D = GKAKA EI JD=J FHo@K?AHI mKIJ ?l=Em = Fl=?A En JDA GKAKA >ABoHA BEllEnC EJ. 6DEI CELAI HEIA Jo = IEJK=JEon En MDE?D 2Ho@K?AH ?l=EmI JDA BEHIJ IloJ, >KJ, >ABoHA BEllEnC EJ, CAJI FHAAmFJA@ En B=LoH oB 2Ho@K?AH , MDE?D ?l=EmI =n@ BEllI JDA IA?on@ IloJ. 6DAn, = ?onIKmAH m=O >A I?DA@KlA@ MDE?D BEn@I noJD­ EnC Jo ?onIKmA KnJEl JDA BEHIJ IloJ EI BEllA@, Io EJ mKIJ M=EJ ALAn JDoKCD =n EJAm EI FHA­ IAnJ EnJDA GKAKA. +KHHAnJlO, JDA =FFlE?=JEon @oAI LAHO MAll MEJDoKJ mKlJE- FHo@K?AH =JomE? GKAKAI =n@ JD=J JAllIKIMA @onߣJ HA=llOnAA@EJ. 5o, EJ EI FAHBA?JlO FoIIE>lA Jo >KEl@ HA=l-JEmA =FFlE?=JEon JD=J @o noJ @o =nO AN?lKIELA HAIoKH?A ID=HEnC =n@, JDAHABoHA, @o noJ HAGKEHA =nO BoHm oB mA?D=nEIm BoH FHEoHEJO- EnLAHIEon. NALAHJDAlAII, MA HA?oCnEzA JD=J JDAHA EI = ?l=II oB =FFlE?=JEonI MDAHA ID=HA@ HAIoKH?AI JDA IF=?A >AJMAAn JMo Ho>oJI on =n =IIAm>lO lEnA, = IA?JEon oB IEnClA JH=?k on = H=ElM=O lEnA, =n =?JK=JoH oH = IAnIoH =HA HA=l =n@ F=HJ oB JDA HA=l-JEmA AnLEHonmAnJ. 0oMALAH, En JDAIA AnLEHonmAnJI, JDA ?oIJ oB ?l=EmEnC =n@ HAlA=IEnC JDA HAIoKH?A KIK=llO HAm=EnI LAHO Im=ll ?omF=HA@ Jo JDA ?oIJ oB =?JK=llO KIEnC JDA HAIoKH?A, ALAn EB ?l=EmEnC =n@ HAlA=IEnC HAGKEHAI IOIJAm ?=llI, FHEoHEJO =@jKIJmAnJI =n@ HAI?DA@Kl­ EnC.

6. References [ ]4. 2EkA, ,. 2HAIoJJo, 5. ,oHM=H@, *. .l=n@HAn=, K. 6DomFIon, 0. 6HE?kAO, 2. 9EnJAH>oJ­ Jom,2l=n'BHom*All L=>I, Computing Systems, 8!,5KmmAH ''#,FF. ߞ #" [ ]Plan 9 Manual, ?KHHAnJ A@EJEon FK>lEIDA@ on-lEnA onlO =J DJJF://Fl=n'.>All- l=>I.?om/IOI/m=n [!]5. J. MKllAn@AH =n@ 2. /. J=nIAn, 4A=l 6EmA En = 4A=l OFAH=JEnC 5OIJAm, En Systems: Theory, Technology, and Applications −− A Tribute to Roger Needham, ). 0AH>AHJ =n@K.5FäH?JonAIA@I.,5FHEnCAH-8AHl=C,NAM ;oHk, ",FF. !- .