2000 - programming under chorusos

565
8/8/2019 2000 - Programming Under ChorusOS http://slidepdf.com/reader/full/2000-programming-under-chorusos 1/565

Upload: franck-dernoncourt

Post on 09-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 2000 - Programming Under ChorusOS

    1/565

    P r o g r a m m i n g u n d e r C h o r u s O S

    J e a n - M a r i e R i e t

    U n i v e r s i t y P a r i s V I I - D e n i s D i d e r o t

    N o v e m b e r 1 4 , 2 0 0 0

  • 8/8/2019 2000 - Programming Under ChorusOS

    2/565

  • 8/8/2019 2000 - Programming Under ChorusOS

    3/565

    C o n t e n t s

    1 G e n e r a l p r e s e n t a t i o n 3

    1 . 1 T h e d e v e l o p m e n t o f C h o r u s . . . . . . . . . . . . . . . . . . . . 3

    1 . 1 . 1 H i s t o r y o f t h e p r o j e c t . . . . . . . . . . . . . . . . . . . . 3

    1 . 1 . 2 T h e S u n E m b e d d e d W o r k s h o p . . . . . . . . . . . . . . . 4

    1 . 2 C o n g u r a t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1 . 3 T h e c r o s s d e v e l o p m e n t e n v i r o n m e n t . . . . . . . . . . . . . . . . 5

    1 . 4 M a i n c h a r a c t e r i s t i c s o f C h o r u s O S . . . . . . . . . . . . . . . . . 5

    1 . 5 T h e m a i n a b s t r a c t i o n s o f C h o r u s O S . . . . . . . . . . . . . . . . 6

    1 . 6 T h e a r c h i t e c t u r e o f C h o r u s O S . . . . . . . . . . . . . . . . . . . 8

    1 . 6 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    1 . 6 . 2 T h e n u c l e u s l a y e r . . . . . . . . . . . . . . . . . . . . . . 9

    1 . 6 . 2 . 1 T h e m i c r o - k e r n e l . . . . . . . . . . . . . . . . . 9

    1 . 6 . 2 . 2 T h e d r i v e r s . . . . . . . . . . . . . . . . . . . . 1 0

    1 . 6 . 2 . 3 T h e P D a c t o r . . . . . . . . . . . . . . . . . . . 1 0

    1 . 6 . 3 T h e O S l a y e r . . . . . . . . . . . . . . . . . . . . . . . . 1 0

    1 . 6 . 3 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . 1 0

    1 . 6 . 3 . 2 T h e C I N I T a c t o r . . . . . . . . . . . . . . . . 1 1

    1 . 6 . 3 . 3 T h e I O M a c t o r . . . . . . . . . . . . . . . . . . 1 1

    1 . 6 . 3 . 4 T h e A M a c t o r . . . . . . . . . . . . . . . . . . 1 1

    1 . 6 . 3 . 5 T h e A D M I N a c t o r . . . . . . . . . . . . . . . . 1 1

    1 . 6 . 3 . 6 T h e S H M R E P a c t o r . . . . . . . . . . . . . . . 1 2

    1 . 6 . 3 . 7 T h e R D B C a c t o r . . . . . . . . . . . . . . . . . 1 2

    1 . 6 . 4 T h e a p p l i c a t i o n l a y e r . . . . . . . . . . . . . . . . . . . . 1 2

    1 . 6 . 5 T h e d i e r e n t f e a t u r e s . . . . . . . . . . . . . . . . . . . . 1 2

    1 . 6 . 5 . 1 A c t o r m a n a g e m e n t f e a t u r e s . . . . . . . . . . . 1 2

    1 . 6 . 5 . 2 S c h e d u l i n g o p t i o n . . . . . . . . . . . . . . . . . 1 3

    1 . 6 . 5 . 3 T h e m e m o r y m a n a g e m e n t f e a t u r e s . . . . . . . 1 3

    1 . 6 . 5 . 4 T h e t i m e m a n a g e m e n t f e a t u r e s . . . . . . . . . 1 3

    1 . 6 . 5 . 5 T h e i n t e r - t h r e a d s y n c h r o n i z a t i o n f e a t u r e s . . . 1 4

    3

  • 8/8/2019 2000 - Programming Under ChorusOS

    4/565

    4 C o n t e n t s

    1 . 6 . 5 . 6 T h e l o c a l i n v o c a t i o n o p t i o n a l f e a t u r e s . . . . . 1 4

    1 . 6 . 5 . 7 T h e c o m m u n i c a t i o n o p t i o n a l f e a t u r e s . . . . . . 1 4

    1 . 6 . 5 . 8 T h e l e s y s t e m o p t i o n a l f e a t u r e s . . . . . . . . 1 5

    1 . 6 . 5 . 9 T h e d e b u g g i n g f e a t u r e s . . . . . . . . . . . . . 1 5

    1 . 6 . 5 . 1 0 T h e C I N I T o p t i o n a l f e a t u r e . . . . . . . . . . 1 6

    1 . 6 . 5 . 1 1 T h e I / O m a n a g e m e n t o p t i o n s . . . . . . . . . . 1 6

    1 . 6 . 5 . 1 2 T h e n e t w o r k f e a t u r e s . . . . . . . . . . . . . . . 1 6

    1 . 6 . 5 . 1 3 T h e a d m i n i s t r a t i o n f e a t u r e s . . . . . . . . . . . 1 6

    1 . 6 . 6 T h e r e s t a r t o p t i o n . . . . . . . . . . . . . . . . . . . . . 1 7

    2 B u i l d i n g a n d b o o t i n g a C h o r u s O S s y s t e m 1 9

    2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 9

    2 . 2 I n s t a l l i n g t h e d e l i v e r y . . . . . . . . . . . . . . . . . . . . . . . . 1 9

    2 . 2 . 1 D o w n l o a d i n g t h e l e s . . . . . . . . . . . . . . . . . . . . 1 9

    2 . 2 . 2 I n s t a l l i n g t h e p a c k a g e s . . . . . . . . . . . . . . . . . . . 2 0

    2 . 2 . 3 O r g a n i z a t i o n o f t h e i n s t a l l e d l e s t r e e . . . . . . . . . . . 2 0

    2 . 2 . 3 . 1 T h e r s t l e v e l . . . . . . . . . . . . . . . . . . . 2 0

    2 . 2 . 3 . 2 T h e t o o l s d i r e c t o r y . . . . . . . . . . . . . . . 2 1

    2 . 2 . 3 . 3 T h e k e r n e l d i r e c t o r y . . . . . . . . . . . . . . 2 2

    2 . 2 . 3 . 4 T h e o s d i r e c t o r y . . . . . . . . . . . . . . . . . 2 3

    2 . 2 . 3 . 5 T h e s r c d i r e c t o r y . . . . . . . . . . . . . . . . 2 3

    2 . 3 B u i l d i n g a s t a n d a r d i m a g e . . . . . . . . . . . . . . . . . . . . . 2 4

    2 . 3 . 1 P r e r e q u i s i t e s . . . . . . . . . . . . . . . . . . . . . . . . . 2 4

    2 . 3 . 2 T h e c o n f i g u r e u t i l i t y . . . . . . . . . . . . . . . . . . . 2 4

    2 . 3 . 3 B u i l d i n g t h e s y s t e m i m a g e . . . . . . . . . . . . . . . . . 2 5

    2 . 3 . 4 B u i l d i n g t h e r o o t l e s y s t e m . . . . . . . . . . . . . . . . 2 6

    2 . 4 C o n g u r i n g a n d t u n i n g a s y s t e m i m a g e . . . . . . . . . . . . . . 2 8

    2 . 4 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8

    2 . 4 . 2 T h e c o n g u r a t i o n l e s . . . . . . . . . . . . . . . . . . . 2 8

    2 . 4 . 3 C o n g u r a t i o n t o o l s . . . . . . . . . . . . . . . . . . . . . 3 0

    2 . 4 . 3 . 1 T h e g r a p h i c a l t o o l e w s . . . . . . . . . . . . . . 3 0

    2 . 4 . 3 . 2 C o m m a n d - l i n e t o o l : c o n f i g u r a t o r . . . . . . . 3 0

    2 . 5 B o o t i n g t h e C h o r u s O S s y s t e m . . . . . . . . . . . . . . . . . . . 3 4

    2 . 5 . 1 P r e p a r i n g t h e b o o t m o n i t o r . . . . . . . . . . . . . . . . 3 5

    2 . 5 . 2 S e t t i n g u p b o o t i n g s e r v i c e s o n t h e h o s t s t a t i o n . . . . . . 3 6

    2 . 5 . 3 T h e R A R P s e r v i c e . . . . . . . . . . . . . . . . . . . . . 3 6

    2 . 5 . 4 T h e T F T P s e r v i c e . . . . . . . . . . . . . . . . . . . . . 3 7

    2 . 5 . 5 C o n n e c t i n g t h e c o n s o l e a n d b o o t i n g . . . . . . . . . . . . 3 8

  • 8/8/2019 2000 - Programming Under ChorusOS

    5/565

    C o n t e n t s 5

    3 G e t t i n g s t a r t e d 4 1

    3 . 1 T h e C I N I T a c t o r a n d i t s i n i t i a l i z a t i o n . . . . . . . . . . . . . . 4 1

    3 . 1 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1

    3 . 1 . 2 T h e s y s a d m . i n i i n i t i a l i z a t i o n l e . . . . . . . . . . . . . 4 1

    3 . 1 . 3 M o u n t i n g t h e r o o t l e s y s t e m . . . . . . . . . . . . . . . 4 2

    3 . 1 . 4 A b o u t s e c u r i t y : t h e / e t c / s e c u r i t y l e . . . . . . . . . . 4 3

    3 . 1 . 5 T h e s t a r t u p l e s . . . . . . . . . . . . . . . . . . . . . . 4 4

    3 . 2 L i s t o f C I N I T b u i l t - i n c o m m a n d s . . . . . . . . . . . . . . . . . 4 4

    3 . 3 T h e e c h o c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . . . 4 5

    3 . 4 T h e e n v i r o n m e n t : e n v , s e t e n v a n d u n s e t e n v . . . . . . . . . . 4 6

    3 . 5 S t a t i s t i c s : m e m s t a t a n d c h o r u s S t a t . . . . . . . . . . . . . . . 4 6

    3 . 5 . 1 T h e m e m s t a t c o m m a n d . . . . . . . . . . . . . . . . . . . 4 6

    3 . 5 . 2 T h e c h o r u s S t a t c o m m a n d . . . . . . . . . . . . . . . . . 4 6

    3 . 6 T h e m o u n t a n d u m o u n t c o m m a n d s . . . . . . . . . . . . . . . . . 4 7

    3 . 7 T h e a p s c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . . . 4 8

    3 . 8 T h e a r u n c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . . . 4 9

    3 . 8 . 1 G e n e r a l f o r m o f t h e a r u n c o m m a n d . . . . . . . . . . . . 4 9

    3 . 8 . 2 W h a t t h e c o m m a n d d o e s . . . . . . . . . . . . . . . . . . 4 9

    3 . 8 . 3 E x e c u t i n g s t a n d a r d c o m m a n d s : t h e e x a m p l e o f c s . . . . 5 0

    3 . 8 . 3 . 1 T h e c s c o m m a n d w i t h o u t a r g u m e n t . . . . . . 5 0

    3 . 8 . 3 . 2 G e t t i n g i n f o r m a t i o n o n s y s t e m c o n g u r a t i o n . . 5 1

    3 . 8 . 3 . 3 G e t t i n g t h e s y s t e m ' s s t a t i s t i c s . . . . . . . . . . 5 2

    3 . 8 . 3 . 4 G e t t i n g u n i q u e i d e n t i e r s . . . . . . . . . . . . 5 2

    3 . 8 . 3 . 5 G e t t i n g i n f o r m a t i o n o n s c h e d u l i n g . . . . . . . 5 3

    3 . 8 . 3 . 6 G e t t i n g i n f o r m a t i o n a b o u t o n e t h r e a d . . . . . 5 3

    3 . 8 . 3 . 7 G e t t i n g i n f o r m a t i o n a b o u t I P C p o r t s . . . . . . 5 3

    3 . 8 . 3 . 8 G e t t i n g i n f o r m a t i o n a b o u t o n e a c t o r . . . . . . 5 4

    3 . 8 . 4 D y n a m i c l o a d i n g o f u s e r a p p l i c a t i o n s . . . . . . . . . . . 5 4

    3 . 9 T h e a k i l l c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . . 5 9

    3 . 1 0 T h e p i n g c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . . . 5 9

    3 . 1 1 T h e r e b o o t c o m m a n d . . . . . . . . . . . . . . . . . . . . . . . 5 9

    3 . 1 2 T h e k e r n e l d e b u g g e r : k d b . . . . . . . . . . . . . . . . . . . . . 6 0

    3 . 1 2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 6 0

    3 . 1 2 . 1 . 1 E n t e r i n g t h e k e r n e l d e b u g g e r . . . . . . . . . . 6 0

    3 . 1 2 . 1 . 2 E x i t i n g t h e k e r n e l d e b u g g e r . . . . . . . . . . . 6 0

    3 . 1 2 . 1 . 3 T h e h e l p c o m m a n d . . . . . . . . . . . . . . . . 6 0

    3 . 1 2 . 2 L i s t o f k d b c o m m a n d s . . . . . . . . . . . . . . . . . . . 6 0

  • 8/8/2019 2000 - Programming Under ChorusOS

    6/565

    6 C o n t e n t s

    4 P r o d u c i n g C h o r u s O S a p p l i c a t i o n s 6 3

    4 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3

    4 . 2 O r g a n i z a t i o n o f t h e w o r k i n g s p a c e . . . . . . . . . . . . . . . . . 6 4

    4 . 3 G e n e r a l c o n v e n t i o n s f o r w r i t i n g C o r C + + c o d e s f o r C h o r u s O S . 6 4

    4 . 3 . 1 H e a d e r l e s . . . . . . . . . . . . . . . . . . . . . . . . . 6 5

    4 . 3 . 2 S y m b o l i c c o n s t a n t s . . . . . . . . . . . . . . . . . . . . . 6 6

    4 . 3 . 3 P r e d e n e d t y p e s . . . . . . . . . . . . . . . . . . . . . . 6 6

    4 . 3 . 4 P r i m i t i v e s . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6

    4 . 3 . 5 E r r o r s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6

    4 . 4 G e n e r a l p r i n c i p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7

    4 . 4 . 1 T h e l i b r a r i e s . . . . . . . . . . . . . . . . . . . . . . . . . 6 7

    4 . 4 . 2 E n t r y p o i n t . . . . . . . . . . . . . . . . . . . . . . . . . 6 7

    4 . 4 . 3 S u p e r v i s o r b i n a r i e s . . . . . . . . . . . . . . . . . . . . . 6 8

    4 . 4 . 4 U s e r b i n a r i e s . . . . . . . . . . . . . . . . . . . . . . . . 6 8

    4 . 5 T h e p r o d u c t i o n ' s e n v i r o n m e n t . . . . . . . . . . . . . . . . . . . 6 8

    4 . 5 . 1 T h e m a k e e n v i r o n m e n t . . . . . . . . . . . . . . . . . . . 6 8

    4 . 5 . 2 T h e i m a k e e n v i r o n m e n t . . . . . . . . . . . . . . . . . . 6 9

    4 . 5 . 3 P r o d u c i n g b i n a r i e s . . . . . . . . . . . . . . . . . . . . . 7 1

    4 . 5 . 3 . 1 T h e C h o r u s O S M k M f c o m m a n d . . . . . . . . . . 7 1

    4 . 5 . 3 . 2 P r o d u c i n g t h e d e p e n d e n c i e s . . . . . . . . . . . 7 1

    4 . 5 . 3 . 3 P r o d u c i n g t h e b i n a r y . . . . . . . . . . . . . . . 7 2

    4 . 5 . 4 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2

    4 . 5 . 4 . 1 P r o d u c i n g e x a m p l e s . . . . . . . . . . . . . . . 7 2

    4 . 5 . 4 . 2 B u i l d i n g a l i b r a r y a n d u s i n g i t . . . . . . . . . 7 4

    4 . 6 D y n a m i c a c t o r s . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8

    4 . 6 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8

    4 . 6 . 2 B u i l d i n g a d y n a m i c l i b r a r y . . . . . . . . . . . . . . . . . 7 8

    4 . 6 . 2 . 1 T h e D y n a m i c L i b r a r y T a r g e t m a c r o . . . . . . . 7 8

    4 . 6 . 2 . 2 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 7 9

    4 . 6 . 3 U s i n g a d y n a m i c l i b r a r y . . . . . . . . . . . . . . . . . . 7 9

    4 . 6 . 3 . 1 D y n a m i c l i n k a t a c t o r s t a r t u p . . . . . . . . . . 7 9

    4 . 6 . 3 . 2 D y n a m i c p r o g r a m m i n g . . . . . . . . . . . . . . 8 0

    4 . 6 . 4 R u n n i n g a d y n a m i c p r o g r a m . . . . . . . . . . . . . . . . 8 2

    5 G e n e r a l s e r v i c e s 8 3

    5 . 1 N a m i n g i n C h o r u s O S . . . . . . . . . . . . . . . . . . . . . . . . 8 3

    5 . 1 . 1 U n i q u e i d e n t i e r s . . . . . . . . . . . . . . . . . . . . . . 8 3

    5 . 1 . 1 . 1 D e n i t i o n a n d c h a r a c t e r i s t i c s . . . . . . . . . . 8 3

    5 . 1 . 1 . 2 T h e K n U n i q u e I d t y p e . . . . . . . . . . . . . . 8 4

  • 8/8/2019 2000 - Programming Under ChorusOS

    7/565

    C o n t e n t s 7

    5 . 1 . 1 . 3 C l e a r i n g a u n i q u e i d e n t i e r . . . . . . . . . . . 8 4

    5 . 1 . 1 . 4 C o m p a r i n g u n i q u e i d e n t i e r s . . . . . . . . . . 8 4

    5 . 1 . 1 . 5 S i t e s a n d u n i q u e i d e n t i e r s . . . . . . . . . . . 8 5

    5 . 1 . 1 . 6 B u i l d i n g a u n i q u e i d e n t i e r . . . . . . . . . . . 8 5

    5 . 1 . 2 C a p a b i l i t i e s . . . . . . . . . . . . . . . . . . . . . . . . . 8 6

    5 . 1 . 2 . 1 D e n i t i o n a n d c h a r a c t e r i s t i c s . . . . . . . . . . 8 6

    5 . 1 . 2 . 2 T h e K n C a p t y p e . . . . . . . . . . . . . . . . . . 8 6

    5 . 1 . 3 L o c a l i d e n t i e r s . . . . . . . . . . . . . . . . . . . . . . . 8 7

    5 . 1 . 4 G e t t i n g t h e l o c a l s i t e n u m b e r . . . . . . . . . . . . . . . 8 7

    5 . 1 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7

    5 . 2 G e t t i n g i n f o r m a t i o n a b o u t C h o r u s O S . . . . . . . . . . . . . . . 8 8

    5 . 2 . 1 G e t t i n g a t u n a b l e p a r a m e t e r . . . . . . . . . . . . . . . . 8 8

    5 . 2 . 2 A c c e s s i n g t h e e n v i r o n m e n t . . . . . . . . . . . . . . . . . 9 0

    5 . 2 . 2 . 1 G e t t i n g a v a l u e : s y s G e t E n v . . . . . . . . . . . 9 0

    5 . 2 . 2 . 2 S e t t i n g a v a l u e : s y s S e t E n v . . . . . . . . . . . 9 1

    5 . 2 . 2 . 3 D e l e t i n g a v a l u e : s y s U n s e t E n v . . . . . . . . . 9 1

    5 . 2 . 2 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 9 1

    5 . 3 I n p u t / o u t p u t f r o m t h e s y s t e m c o n s o l e . . . . . . . . . . . . . . 9 3

    5 . 3 . 1 R e a d i n g f r o m t h e s y s t e m c o n s o l e : s y s R e a d . . . . . . . . 9 3

    5 . 3 . 2 W r i t i n g t o t h e s y s t e m c o n s o l e : s y s W r i t e . . . . . . . . . 9 3

    5 . 3 . 3 P o l l i n g t h e s y s t e m c o n s o l e : s y s P o l l . . . . . . . . . . . 9 4

    5 . 3 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4

    5 . 4 R e b o o t i n g t h e l o c a l s y s t e m . . . . . . . . . . . . . . . . . . . . . 9 5

    6 A c t o r s 9 7

    6 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 7

    6 . 2 A c t o r s a t t r i b u t e s . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9

    6 . 2 . 1 I d e n t i f y i n g a n a c t o r . . . . . . . . . . . . . . . . . . . . . 9 9

    6 . 2 . 1 . 1 C a p a b i l i t y o f a n a c t o r . . . . . . . . . . . . . . 9 9

    6 . 2 . 1 . 2 S y m b o l i c n a m e . . . . . . . . . . . . . . . . . . 9 9

    6 . 2 . 1 . 3 T h e c a s e o f c a c t o r s . . . . . . . . . . . . . . . 1 0 0

    6 . 2 . 2 A c t o r s s t a t e s . . . . . . . . . . . . . . . . . . . . . . . . 1 0 0

    6 . 2 . 2 . 1 T h e b a s i c s t a t e s . . . . . . . . . . . . . . . . . 1 0 0

    6 . 2 . 2 . 2 C h a n g i n g t h e b a s i c s t a t e o f a n a c t o r . . . . . . 1 0 1

    6 . 2 . 3 A c t o r s p r i v i l e g e . . . . . . . . . . . . . . . . . . . . . . . 1 0 1

    6 . 2 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 2

    6 . 3 G e t t i n g s t a t u s o f a c t o r s o n t h e s i t e . . . . . . . . . . . . . . . . 1 0 5

    6 . 3 . 1 G e t t i n g s t a t u s o f a l l a c t o r s o n t h e s i t e . . . . . . . . . . 1 0 5

    6 . 3 . 2 G e t t i n g s t a t u s o f a l l c a c t o r s o n t h e s i t e . . . . . . . . . 1 0 6

  • 8/8/2019 2000 - Programming Under ChorusOS

    8/565

    8 C o n t e n t s

    6 . 4 C r e a t i n g a c t o r s . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 8

    6 . 4 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . 1 0 8

    6 . 4 . 2 P r o m o t i n g a n a c t o r t o t h e s t a t u s o f c a c t o r . . . . . . . . 1 0 9

    6 . 4 . 3 H i g h l e v e l c r e a t i o n o f c a c t o r s . . . . . . . . . . . . . . . 1 0 9

    6 . 4 . 3 . 1 S p e c i c a t t r i b u t e s o f a c a c t o r . . . . . . . . . . 1 0 9

    6 . 4 . 3 . 2 S p a w n i n g a c a c t o r : t h e a f e x e c p r i m i t i v e s . . . 1 1 0

    6 . 4 . 4 L o w l e v e l o p e r a t i o n s o n c a c t o r s . . . . . . . . . . . . . . 1 1 8

    6 . 4 . 4 . 1 C r e a t i n g a n e m p t y c a c t o r : a c r e a t e . . . . . . 1 1 8

    6 . 4 . 4 . 2 L o a d i n g t e x t a n d d a t a f o r a c a c t o r : a l o a d . . 1 2 0

    6 . 4 . 4 . 3 A c t i v a t i n g a c a c t o r : a s t a r t . . . . . . . . . . 1 2 5

    6 . 4 . 5 T h e l o w l e v e l i n t e r f a c e : a c t o r C r e a t e . . . . . . . . . . . 1 2 6

    6 . 5 D e l e t i n g a c t o r s . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 9

    6 . 5 . 1 T h e l o w l e v e l i n t e r f a c e : a c t o r D e l e t e . . . . . . . . . . . 1 2 9

    6 . 5 . 2 T e r m i n a t i n g c a c t o r s . . . . . . . . . . . . . . . . . . . . 1 3 0

    6 . 5 . 2 . 1 T e r m i n a t i o n o f t h e m a i n t h r e a d . . . . . . . . . 1 3 0

    6 . 5 . 2 . 2 K i l l i n g a c a c t o r : a k i l l . . . . . . . . . . . . . 1 3 1

    6 . 6 S y n c h r o n i z i n g c a c t o r s ' t h r e a d s ' e x e c u t i o n s . . . . . . . . . . . . 1 3 3

    7 B a s i c m e m o r y m a n a g e m e n t 1 3 9

    7 . 1 G e n e r a l c o n c e p t s . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 9

    7 . 1 . 1 T h e m e m o r y m o d e l s a n d t h e f e a t u r e s . . . . . . . . . . . 1 3 9

    7 . 1 . 2 M e m o r y m a n a g e m e n t . . . . . . . . . . . . . . . . . . . . 1 4 1

    7 . 1 . 2 . 1 S u p e r v i s o r a n d u s e r a d d r e s s s p a c e s . . . . . . . 1 4 1

    7 . 1 . 2 . 2 T h e p a g e s i z e . . . . . . . . . . . . . . . . . . . 1 4 1

    7 . 1 . 2 . 3 P a r a m e t e r s f o r m e m o r y m a n a g e m e n t . . . . . . 1 4 2

    7 . 2 O r g a n i z a t i o n o f a n a c t o r ' s a d d r e s s s p a c e . . . . . . . . . . . . . 1 4 4

    7 . 2 . 1 T h e c o n c e p t o f r e g i o n . . . . . . . . . . . . . . . . . . . . 1 4 4

    7 . 2 . 2 O r g a n i z a t i o n o f u s e r c a c t o r s ' a d d r e s s s p a c e . . . . . . . 1 4 4

    7 . 2 . 2 . 1 T h e M E M F L A T m o d e l . . . . . . . . . . . . . 1 4 4

    7 . 2 . 2 . 2 T h e M E M P R O T E C T E D m o d e l . . . . . . . . 1 4 6

    7 . 2 . 3 O r g a n i z a t i o n o f s u p e r v i s o r c a c t o r s . . . . . . . . . . . . 1 4 7

    7 . 2 . 4 R e g i o n s ' d e s c r i p t o r s . . . . . . . . . . . . . . . . . . . . . 1 4 8

    7 . 2 . 5 R e g i o n s ' a t t r i b u t e s . . . . . . . . . . . . . . . . . . . . . 1 4 9

    7 . 2 . 5 . 1 I n i t i a l i z a t i o n a t t r i b u t e s . . . . . . . . . . . . . 1 4 9

    7 . 2 . 5 . 2 P r o t e c t i o n a t t r i b u t e s . . . . . . . . . . . . . . . 1 4 9

    7 . 2 . 5 . 3 V i r t u a l m e m o r y s p e c i c a t t r i b u t e s . . . . . . . 1 5 1

    7 . 2 . 6 V i r t u a l a d d r e s s e s a n d p h y s i c a l a d d r e s s e s . . . . . . . . . 1 5 1

    7 . 2 . 7 D i s p l a y i n g a l l r e g i o n s o f a n a c t o r . . . . . . . . . . . . . 1 5 4

    7 . 2 . 7 . 1 T h e r g n S t a t f u n c t i o n . . . . . . . . . . . . . . 1 5 4

  • 8/8/2019 2000 - Programming Under ChorusOS

    9/565

  • 8/8/2019 2000 - Programming Under ChorusOS

    10/565

    1 0 C o n t e n t s

    8 . 2 . 1 . 1 L o c a l i d e n t i c a t i o n . . . . . . . . . . . . . . . . 1 9 8

    8 . 2 . 1 . 2 S y m b o l i c n a m e . . . . . . . . . . . . . . . . . . 1 9 8

    8 . 2 . 2 T h r e a d s t a t e s . . . . . . . . . . . . . . . . . . . . . . . . 1 9 9

    8 . 3 T h r e a d s s c h e d u l i n g . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 0

    8 . 3 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 0

    8 . 3 . 2 T h e s c h e d u l i n g c l a s s e s . . . . . . . . . . . . . . . . . . . 2 0 0

    8 . 3 . 2 . 1 T h e F I F O c l a s s . . . . . . . . . . . . . . . . . . 2 0 1

    8 . 3 . 2 . 2 T h e R R c l a s s . . . . . . . . . . . . . . . . . . . 2 0 1

    8 . 3 . 2 . 3 T h e R T c l a s s . . . . . . . . . . . . . . . . . . . 2 0 2

    8 . 3 . 3 G e t t i n g o r s e t t i n g s c h e d u l i n g i n f o r m a t i o n . . . . . . . . . 2 0 3

    8 . 3 . 3 . 1 T h e d e f a u l t K n T h r e a d D e f a u l t S c h e d c l a s s . . . 2 0 3

    8 . 3 . 3 . 2 T h e t h r e a d S c h e d u l e r p r i m i t i v e . . . . . . . . 2 0 3

    8 . 3 . 4 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 4

    8 . 3 . 4 . 1 G e t t i n g s c h e d u l i n g a t t r i b u t e s . . . . . . . . . . 2 0 4

    8 . 3 . 4 . 2 M o d i f y i n g s c h e d u l i n g a t t r i b u t e s . . . . . . . . . 2 0 6

    8 . 3 . 4 . 3 F i f o s c h e d u l i n g v s R o u n d R o b i n s c h e d u l i n g . . 2 0 7

    8 . 4 D e l a y i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 8

    8 . 4 . 1 T h e t h r e a d D e l a y p r i m i t i v e . . . . . . . . . . . . . . . . 2 0 8

    8 . 4 . 2 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 9

    8 . 5 C r e a t i n g a n d d e l e t i n g a t h r e a d . . . . . . . . . . . . . . . . . . . 2 1 1

    8 . 5 . 1 C r e a t i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . 2 1 1

    8 . 5 . 1 . 1 T h e t h r e a d C r e a t e p r i m i t i v e . . . . . . . . . . 2 1 1

    8 . 5 . 1 . 2 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . 2 1 3

    8 . 5 . 2 D e l e t i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . 2 2 5

    8 . 5 . 2 . 1 T h e e e c t o f c a l l i n g e x i t a n d e x i t . . . . . . 2 2 5

    8 . 5 . 2 . 2 T h e t h r e a d D e l e t e p r i m i t i v e . . . . . . . . . . 2 2 6

    8 . 5 . 2 . 3 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . 2 2 6

    8 . 6 A c t i v a t i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 9

    8 . 7 S t o p p i n g a n d r e s t a r t i n g a t h r e a d . . . . . . . . . . . . . . . . . 2 3 0

    8 . 7 . 1 S t o p p i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . 2 3 0

    8 . 7 . 2 R e s t a r t i n g a s t o p p e d t h r e a d . . . . . . . . . . . . . . . . 2 3 0

    8 . 8 A b o r t i n g a t h r e a d . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 0

    8 . 8 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 0

    8 . 8 . 2 T h e c o m p l e t e s t a t e s d i a g r a m o f a t h r e a d . . . . . . . . . 2 3 1

    8 . 8 . 3 T h e t h r e a d A b o r t a n d t h r e a d A b o r t e d p r i m i t i v e s . . . . 2 3 2

    8 . 8 . 4 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 2

    8 . 8 . 4 . 1 A c o m m a n d f o r a b o r t i n g a g i v e n t h r e a d . . . . 2 3 2

    8 . 8 . 4 . 2 T h r e a d ' s a u t o - a b o r t i o n . . . . . . . . . . . . . . 2 3 3

    8 . 8 . 4 . 3 A n o n a b o r t a b l e c a l l . . . . . . . . . . . . . . . 2 3 3

  • 8/8/2019 2000 - Programming Under ChorusOS

    11/565

    C o n t e n t s 1 1

    8 . 8 . 4 . 4 T e s t i n g t h e a b o r t e d s t a t e . . . . . . . . . . . . 2 3 4

    8 . 9 G e t t i n g t h e a t t r i b u t e s o f a l l t h r e a d s i n a n a c t o r . . . . . . . . . 2 3 5

    8 . 9 . 1 T h e t h r e a d S t a t p r i m i t i v e . . . . . . . . . . . . . . . . . 2 3 5

    8 . 9 . 2 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 5

    8 . 1 0 E x e c u t i o n t i m e s . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 7

    8 . 1 1 M a n a g i n g a t h r e a d ' s c o n t e x t . . . . . . . . . . . . . . . . . . . . 2 3 9

    8 . 1 2 A c o m p l e t e e x a m p l e : a f o r k f u n c t i o n . . . . . . . . . . . . . . . 2 4 0

    8 . 1 2 . 1 O b j e c t i v e s a n d g e n e r a l p r i n c i p l e s . . . . . . . . . . . . . 2 4 0

    8 . 1 2 . 2 V a r i a t i o n s o n s o l u t i o n s . . . . . . . . . . . . . . . . . . . 2 4 1

    8 . 1 2 . 2 . 1 A s o l u t i o n w i t h c r e a t i o n o f a c a c t o r . . . . . . 2 4 1

    8 . 1 2 . 2 . 2 A s o l u t i o n w i t h l o w l e v e l a c t o r ' s c r e a t i o n . . . . 2 4 5

    8 . 1 3 P o s i x t h r e a d s ( p t h r e a d s ) . . . . . . . . . . . . . . . . . . . . . . 2 4 6

    8 . 1 3 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 6

    8 . 1 3 . 2 P o s i x t h r e a d s ' a t t r i b u t e s . . . . . . . . . . . . . . . . . . 2 4 6

    8 . 1 3 . 3 C r e a t i n g a p t h r e a d . . . . . . . . . . . . . . . . . . . . . 2 4 7

    8 . 1 3 . 4 Y i e l d i n g t h e p r o c e s s o r . . . . . . . . . . . . . . . . . . . 2 4 8

    8 . 1 3 . 5 T e r m i n a t i n g a p t h r e a d . . . . . . . . . . . . . . . . . . . 2 4 8

    8 . 1 3 . 6 K i l l i n g a p t h r e a d . . . . . . . . . . . . . . . . . . . . . . 2 4 8

    8 . 1 3 . 7 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 9

    9 S y n c h r o n i z a t i o n 2 5 1

    9 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 1

    9 . 2 T h r e a d s e m a p h o r e s . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 2

    9 . 2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 2

    9 . 2 . 2 I n i t i a l i z i n g a t h r e a d s e m a p h o r e . . . . . . . . . . . . . . 2 5 2

    9 . 2 . 3 P o s t i n g a t h r e a d s e m a p h o r e . . . . . . . . . . . . . . . . 2 5 3

    9 . 2 . 4 W a i t i n g o n a t h r e a d s e m a p h o r e . . . . . . . . . . . . . . 2 5 3

    9 . 2 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 4

    9 . 3 G e n e r a l m u t e x e s . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 6

    9 . 3 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 6

    9 . 3 . 2 I n i t i a l i z i n g a m u t e x . . . . . . . . . . . . . . . . . . . . . 2 5 6

    9 . 3 . 3 A c q u i r i n g a m u t e x . . . . . . . . . . . . . . . . . . . . . 2 5 7

    9 . 3 . 4 F r e e i n g a m u t e x . . . . . . . . . . . . . . . . . . . . . . . 2 5 7

    9 . 3 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 7

    9 . 4 R e a l - t i m e m u t e x e s . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 9

    9 . 5 G e n e r a l s e m a p h o r e s . . . . . . . . . . . . . . . . . . . . . . . . . 2 6 1

    9 . 5 . 1 I n i t i a l i z i n g a s e m a p h o r e : s e m I n i t . . . . . . . . . . . . . 2 6 1

    9 . 5 . 2 W a i t i n g f o r a s e m a p h o r e : s e m P . . . . . . . . . . . . . . 2 6 2

    9 . 5 . 3 S i g n a l i n g a s e m a p h o r e : s e m V . . . . . . . . . . . . . . . . 2 6 2

  • 8/8/2019 2000 - Programming Under ChorusOS

    12/565

    1 2 C o n t e n t s

    9 . 5 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 6 2

    9 . 6 E v e n t s e t s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 6 7

    9 . 6 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 6 7

    9 . 6 . 2 I n i t i a l i z i n g a n e v e n t s e t : e v e n t I n i t . . . . . . . . . . . . 2 6 7

    9 . 6 . 3 P o s t i n g a n e v e n t : e v e n t P o s t . . . . . . . . . . . . . . . 2 6 8

    9 . 6 . 4 W a i t i n g f o r e v e n t s : e v e n t W a i t . . . . . . . . . . . . . . . 2 6 8

    9 . 6 . 5 C l e a r i n g e v e n t s : e v e n t C l e a r . . . . . . . . . . . . . . . . 2 6 9

    9 . 6 . 6 E x a m p l e : a s y n c h r o n i z a t i o n b a r r i e r ' s i m p l e m e n t a t i o n . . 2 7 0

    9 . 7 P o s i x s y n c h r o n i z a t i o n m e c h a n i s m . . . . . . . . . . . . . . . . . 2 7 6

    9 . 7 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 7 6

    9 . 7 . 2 W a i t i n g f o r t h r e a d t e r m i n a t i o n . . . . . . . . . . . . . . 2 7 7

    9 . 7 . 3 P o s i x m u t e x e s . . . . . . . . . . . . . . . . . . . . . . . . 2 7 7

    9 . 7 . 3 . 1 A t t r i b u t e s o f P o s i x m u t e x e s . . . . . . . . . . . 2 7 7

    9 . 7 . 3 . 2 L o c k i n g a P o s i x m u t e x . . . . . . . . . . . . . . 2 7 8

    9 . 7 . 3 . 3 U n l o c k i n g a P o s i x m u t e x . . . . . . . . . . . . . 2 7 8

    9 . 7 . 4 P o s i x c o n d i t i o n v a r i a b l e s . . . . . . . . . . . . . . . . . . 2 7 8

    9 . 7 . 4 . 1 I n i t i a l i z i n g a c o n d i t i o n v a r i a b l e . . . . . . . . . 2 7 8

    9 . 7 . 4 . 2 W a i t i n g o n a c o n d i t i o n v a r i a b l e . . . . . . . . . 2 7 9

    9 . 7 . 4 . 3 S i g n a l i n g a c o n d i t i o n v a r i a b l e . . . . . . . . . . 2 7 9

    9 . 7 . 4 . 4 G e n e r a l o u t l i n e . . . . . . . . . . . . . . . . . . 2 8 0

    1 0 P r i v a t e d a t a 2 8 1

    1 0 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8 1

    1 0 . 2 S t a n d a r d s e r v i c e s . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8 2

    1 0 . 2 . 1 T h e e r r n o v a r i a b l e . . . . . . . . . . . . . . . . . . . . . 2 8 2

    1 0 . 2 . 2 T h r e a d s ' l o c a l i d e n t i e r s . . . . . . . . . . . . . . . . . . 2 8 4

    1 0 . 3 T h e p r i v a t e d a t a k e y s . . . . . . . . . . . . . . . . . . . . . . . . 2 8 4

    1 0 . 4 C h o r u s p e r - t h r e a d p r i v a t e d a t a . . . . . . . . . . . . . . . . . . 2 8 5

    1 0 . 4 . 1 C r e a t i n g a n d d e l e t i n g a t h r e a d s p e c i c d a t a k e y . . . . . 2 8 5

    1 0 . 4 . 2 S e t t i n g a t h r e a d - s p e c i c v a l u e . . . . . . . . . . . . . . . 2 8 6

    1 0 . 4 . 3 G e t t i n g a t h r e a d s p e c i c v a l u e . . . . . . . . . . . . . . . 2 8 7

    1 0 . 4 . 4 D e l e t i n g a l l t h r e a d s p e c i c v a l u e s . . . . . . . . . . . . . 2 8 7

    1 0 . 4 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 8 8

    1 0 . 5 C h o r u s p e r - a c t o r p r i v a t e d a t a . . . . . . . . . . . . . . . . . . . 2 9 1

    1 0 . 5 . 1 C r e a t i n g a n d d e l e t i n g a n a c t o r p r i v a t e k e y . . . . . . . . 2 9 1

    1 0 . 5 . 2 S e t t i n g a n a c t o r s p e c i c v a l u e . . . . . . . . . . . . . . . 2 9 2

    1 0 . 5 . 3 G e t t i n g a n a c t o r s p e c i c v a l u e . . . . . . . . . . . . . . . 2 9 2

    1 0 . 5 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 9 2

    1 0 . 6 P o s i x p r i v a t e d a t a . . . . . . . . . . . . . . . . . . . . . . . . . . 2 9 6

  • 8/8/2019 2000 - Programming Under ChorusOS

    13/565

    C o n t e n t s 1 3

    1 0 . 6 . 1 C r e a t i n g a P o s i x t h r e a d - s p e c i c k e y . . . . . . . . . . . . 2 9 6

    1 0 . 6 . 2 D e l e t i n g a P o s i x t h r e a d - s p e c i c k e y . . . . . . . . . . . . 2 9 7

    1 0 . 6 . 3 A s s o c i a t i n g a v a l u e t o a P o s i x t h r e a d - s p e c i c k e y . . . . 2 9 7

    1 0 . 6 . 4 G e t t i n g t h e v a l u e f o r a P o s i x t h r e a d - s p e c i c k e y . . . . . 2 9 7

    1 1 L o c a l a c c e s s p o i n t s ( L A P s ) 2 9 9

    1 1 . 1 G e n e r a l o v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 2 9 9

    1 1 . 2 G e n e r a l t o o l s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 0 0

    1 1 . 2 . 1 C o p y i n g d a t a b e t w e e n u s e r a n d s u p e r v i s o r a d d r e s s s p a c e s 3 0 1

    1 1 . 2 . 2 M a n i p u l a t i n g l a p d e s c r i p t o r s . . . . . . . . . . . . . . . . 3 0 2

    1 1 . 2 . 2 . 1 I n i t i a l i z i n g a l a p d e s c r i p t o r t o z e r o . . . . . . . 3 0 2

    1 1 . 2 . 2 . 2 T e s t i n g i f a l a p d e s c r i p t o r i s i n i t i a l i z e d . . . . . 3 0 2

    1 1 . 2 . 2 . 3 D u p l i c a t i n g a l a p d e s c r i p t o r . . . . . . . . . . . 3 0 3

    1 1 . 3 T h e s e r v e r ' s p o i n t o f v i e w . . . . . . . . . . . . . . . . . . . . . 3 0 3

    1 1 . 3 . 1 C r e a t i n g a l o c a l a c c e s s p o i n t . . . . . . . . . . . . . . . . 3 0 3

    1 1 . 3 . 2 B i n d i n g a s y m b o l i c n a m e t o a l a p d e s c r i p t o r . . . . . . . 3 0 4

    1 1 . 3 . 3 U n b i n d i n g a l a p ' s s y m b o l i c n a m e . . . . . . . . . . . . . 3 0 4

    1 1 . 3 . 4 G e t t i n g h a n d l e r i n v o k e r . . . . . . . . . . . . . . . . . . 3 0 5

    1 1 . 3 . 5 D e l e t i n g a l o c a l a c c e s s p o i n t : s v L a p D e l e t e . . . . . . . . 3 0 5

    1 1 . 3 . 6 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 3 0 5

    1 1 . 3 . 6 . 1 I n s t a l l i n g a l a p i n t h e c u r r e n t a c t o r . . . . . . . 3 0 5

    1 1 . 3 . 6 . 2 C o p y s e r v i c e b e t w e e n u s e r a n d s u p e r v i s o r s p a c e s 3 0 6

    1 1 . 3 . 6 . 3 D e n i n g d i e r e n t l a p h a n d l e r s i n t h e s a m e a c t o r 3 0 9

    1 1 . 4 T h e c l i e n t ' s p o i n t o f v i e w . . . . . . . . . . . . . . . . . . . . . . 3 1 2

    1 1 . 4 . 1 R e s o l v i n g a n a m e . . . . . . . . . . . . . . . . . . . . . . 3 1 2

    1 1 . 4 . 2 S y n c h r o n o u s i n v o c a t i o n o f a l a p h a n d l e r . . . . . . . . . 3 1 2

    1 1 . 4 . 3 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1 3

    1 1 . 4 . 3 . 1 A c l i e n t o f t h e l a p C p s e r v i c e . . . . . . . . . . . 3 1 3

    1 1 . 4 . 3 . 2 A c l i e n t o f t h e m u l t i L a p s e r v i c e . . . . . . . . . 3 1 5

    1 2 T i m e m a n a g e m e n t 3 2 1

    1 2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 1

    1 2 . 1 . 1 T h e f e a t u r e s . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 1

    1 2 . 1 . 2 D e s c r i b i n g t i m e i n t e r v a l s . . . . . . . . . . . . . . . . . . 3 2 1

    1 2 . 1 . 3 T i m e r e s o l u t i o n a n d s y s t e m t i m e . . . . . . . . . . . . . 3 2 2

    1 2 . 2 T h e D A T E f e a t u r e . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 3

    1 2 . 2 . 1 G e t t i n g u n i v e r s a l t i m e r e s o l u t i o n : u n i v T i m e G e t R e s . . . 3 2 3

    1 2 . 2 . 2 G e t t i n g t i m e o f d a y : u n i v T i m e . . . . . . . . . . . . . . 3 2 3

    1 2 . 2 . 3 S e t t i n g t i m e o f d a y : u n i v T i m e S e t , u n i v T i m e A d j u s t . . . 3 2 3

  • 8/8/2019 2000 - Programming Under ChorusOS

    14/565

  • 8/8/2019 2000 - Programming Under ChorusOS

    15/565

    C o n t e n t s 1 5

    1 3 . 2 . 3 O p e n i n g a m e s s a g e s p a c e . . . . . . . . . . . . . . . . . . 3 5 8

    1 3 . 2 . 4 O p e r a t i o n s o n m e s s a g e s . . . . . . . . . . . . . . . . . . 3 5 8

    1 3 . 2 . 4 . 1 G e n e r a l p r i n c i p l e s . . . . . . . . . . . . . . . . 3 5 8

    1 3 . 2 . 4 . 2 A l l o c a t i n g a m e s s a g e . . . . . . . . . . . . . . . 3 5 9

    1 3 . 2 . 4 . 3 P o s t i n g a m e s s a g e t o a q u e u e . . . . . . . . . . 3 6 0

    1 3 . 2 . 4 . 4 G e t t i n g a m e s s a g e f r o m a q u e u e . . . . . . . . . 3 6 1

    1 3 . 2 . 4 . 5 F r e e i n g a m e s s a g e . . . . . . . . . . . . . . . . 3 6 1

    1 3 . 2 . 4 . 6 R e m o v i n g a m e s s a g e f r o m a q u e u e . . . . . . . 3 6 2

    1 3 . 2 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 2

    1 3 . 3 T h e C h o r u s O S I P C . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 8

    1 3 . 3 . 1 T h e f e a t u r e s . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 8

    1 3 . 3 . 1 . 1 T h e I P C f e a t u r e . . . . . . . . . . . . . . . . . . 3 6 8

    1 3 . 3 . 1 . 2 T h e I P C R E M O T E f e a t u r e . . . . . . . . . . . . . 3 6 9

    1 3 . 3 . 2 P o r t s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 1

    1 3 . 3 . 2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . 3 7 1

    1 3 . 3 . 2 . 2 I d e n t i c a t i o n . . . . . . . . . . . . . . . . . . . 3 7 2

    1 3 . 3 . 2 . 3 P o r t s t a t e s . . . . . . . . . . . . . . . . . . . . 3 7 3

    1 3 . 3 . 2 . 4 C r e a t i n g a p o r t . . . . . . . . . . . . . . . . . . 3 7 4

    1 3 . 3 . 2 . 5 D e l e t i n g a p o r t . . . . . . . . . . . . . . . . . . 3 7 5

    1 3 . 3 . 3 P o r t s g r o u p s . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 6

    1 3 . 3 . 3 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . 3 7 6

    1 3 . 3 . 3 . 2 A l l o c a t i n g a p o r t g r o u p c a p a b i l i t y . . . . . . . 3 7 7

    1 3 . 3 . 3 . 3 I n s e r t i n g a p o r t i n t o a p o r t g r o u p . . . . . . . . 3 7 8

    1 3 . 3 . 3 . 4 R e m o v i n g a p o r t f r o m a p o r t g r o u p . . . . . . . 3 7 9

    1 3 . 3 . 4 M e s s a g e s . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 9

    1 3 . 3 . 4 . 1 M e s s a g e s t r u c t u r e . . . . . . . . . . . . . . . . 3 7 9

    1 3 . 3 . 4 . 2 C u r r e n t m e s s a g e . . . . . . . . . . . . . . . . . 3 8 0

    1 3 . 3 . 5 D e s t i n a t i o n s a n d m o d e s . . . . . . . . . . . . . . . . . . 3 8 1

    1 3 . 3 . 6 A s y n c h r o n o u s c o m m u n i c a t i o n . . . . . . . . . . . . . . . 3 8 2

    1 3 . 3 . 6 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . 3 8 2

    1 3 . 3 . 6 . 2 S e n d i n g a m e s s a g e . . . . . . . . . . . . . . . . 3 8 2

    1 3 . 3 . 6 . 3 R e c e i v i n g a m e s s a g e . . . . . . . . . . . . . . . 3 8 4

    1 3 . 3 . 6 . 4 R e p l y i n g t o a m e s s a g e . . . . . . . . . . . . . . 3 8 6

    1 3 . 3 . 6 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 3 8 6

    1 3 . 3 . 7 S y n c h r o n o u s c o m m u n i c a t i o n s . . . . . . . . . . . . . . . 3 9 3

    1 3 . 3 . 7 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . 3 9 3

    1 3 . 3 . 7 . 2 I n i t i a t i n g a n R P C . . . . . . . . . . . . . . . . 3 9 3

    1 3 . 3 . 7 . 3 S e n d i n g a r e p l y . . . . . . . . . . . . . . . . . . 3 9 5

    1 3 . 3 . 7 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 3 9 5

  • 8/8/2019 2000 - Programming Under ChorusOS

    16/565

    1 6 C o n t e n t s

    1 3 . 3 . 8 M a n i p u l a t i n g t h e c u r r e n t m e s s a g e . . . . . . . . . . . . . 3 9 8

    1 3 . 3 . 8 . 1 G e t t i n g i n f o r m a t i o n a b o u t t h e c u r r e n t m e s s a g e 3 9 8

    1 3 . 3 . 8 . 2 G e t t i n g t h e c u r r e n t m e s s a g e b o d y . . . . . . . . 3 9 9

    1 3 . 3 . 8 . 3 S a v i n g t h e c u r r e n t m e s s a g e . . . . . . . . . . . 3 9 9

    1 3 . 3 . 8 . 4 R e s t o r i n g a s a v e d m e s s a g e a s c u r r e n t m e s s a g e . 4 0 0

    1 3 . 4 M e s s a g e h a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0 1

    1 3 . 4 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0 1

    1 3 . 4 . 2 C o n n e c t i n g a n d d i s c o n n e c t i n g a h a n d l e r t o a p o r t . . . . 4 0 2

    1 3 . 4 . 3 E x i t i n g a m e s s a g e h a n d l e r . . . . . . . . . . . . . . . . . 4 0 3

    1 3 . 4 . 4 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0 3

    1 3 . 5 M i s c e l l a n e o u s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0 8

    1 3 . 5 . 1 G e t t i n g a p o r t s e q u e n c e n u m b e r . . . . . . . . . . . . . . 4 0 8

    1 3 . 5 . 2 M i g r a t i n g a p o r t . . . . . . . . . . . . . . . . . . . . . . 4 0 8

    1 3 . 5 . 2 . 1 T h e s e r v i c e . . . . . . . . . . . . . . . . . . . . 4 0 8

    1 3 . 5 . 2 . 2 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 4 0 9

    1 4 A b o r t i o n s , e x c e p t i o n s a n d t r a p s 4 1 3

    1 4 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 3

    1 4 . 2 A b o r t h a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 4

    1 4 . 2 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 4

    1 4 . 2 . 2 C o n s u l t i n g t h e a b o r t h a n d l e r s v e c t o r . . . . . . . . . . . 4 1 7

    1 4 . 2 . 3 C o n n e c t i n g a b o r t h a n d l e r s . . . . . . . . . . . . . . . . . 4 1 7

    1 4 . 2 . 4 D i s c o n n e c t i n g a n a b o r t h a n d l e r . . . . . . . . . . . . . . 4 1 8

    1 4 . 2 . 5 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 8

    1 4 . 3 E x c e p t i o n h a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 1

    1 4 . 3 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 1

    1 4 . 3 . 2 C o n s u l t i n g t h e e x c e p t i o n h a n d l e r s v e c t o r . . . . . . . . . 4 2 2

    1 4 . 3 . 3 C o n n e c t i n g a n e x c e p t i o n h a n d l e r . . . . . . . . . . . . . 4 2 3

    1 4 . 3 . 4 D i s c o n n e c t i n g a n e x c e p t i o n h a n d l e r . . . . . . . . . . . . 4 2 4

    1 4 . 3 . 5 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 4

    1 4 . 3 . 5 . 1 E x a m p l e 1 . . . . . . . . . . . . . . . . . . . . . 4 2 4

    1 4 . 3 . 5 . 2 E x a m p l e 2 : a s e r v e r f o r a u t o m a t i c a l l o c a t i o n . . 4 3 0

    1 4 . 4 T r a p s a n d s u b s y s t e m s . . . . . . . . . . . . . . . . . . . . . . . 4 3 8

    1 4 . 4 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 8

    1 4 . 4 . 2 T r a p h a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . 4 3 9

    1 4 . 4 . 2 . 1 G e n e r a l p r e s e n t a t i o n . . . . . . . . . . . . . . . 4 3 9

    1 4 . 4 . 2 . 2 C o n n e c t i n g a t r a p h a n d l e r . . . . . . . . . . . . 4 4 0

    1 4 . 4 . 2 . 3 D i s c o n n e c t i n g a t r a p h a n d l e r . . . . . . . . . . 4 4 0

    1 4 . 4 . 2 . 4 G e t t i n g a t r a p h a n d l e r . . . . . . . . . . . . . . 4 4 1

  • 8/8/2019 2000 - Programming Under ChorusOS

    17/565

    C o n t e n t s 1 7

    1 4 . 4 . 3 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 1

    1 4 . 5 T i m e o u t h a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 6

    1 4 . 5 . 1 S e t t i n g a t i m e o u t . . . . . . . . . . . . . . . . . . . . . . 4 4 6

    1 4 . 5 . 2 C a n c e l i n g a t i m e o u t . . . . . . . . . . . . . . . . . . . . 4 4 7

    1 4 . 5 . 3 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 7

    1 5 T h e M E M V I R T U A L m e m o r y m a n a g e m e n t m o d e l 4 4 9

    1 5 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 9

    1 5 . 1 . 1 G e n e r a l o v e r v i e w . . . . . . . . . . . . . . . . . . . . . . 4 4 9

    1 5 . 1 . 2 S e g m e n t s . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 0

    1 5 . 1 . 3 L o c a l c a c h e s . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 1

    1 5 . 1 . 4 T h e g e n e r i c i n t e r f a c e . . . . . . . . . . . . . . . . . . . . 4 5 1

    1 5 . 2 B a s i c c o n c e p t s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 1

    1 5 . 2 . 1 G e n e r a l a s p e c t s . . . . . . . . . . . . . . . . . . . . . . . 4 5 1

    1 5 . 2 . 2 P a r a m e t e r s f o r m e m o r y m a n a g e m e n t . . . . . . . . . . . 4 5 2

    1 5 . 2 . 3 R e g i o n s ' a t t r i b u t e s . . . . . . . . . . . . . . . . . . . . . 4 5 3

    1 5 . 2 . 3 . 1 P a g i n g a t t r i b u t e s . . . . . . . . . . . . . . . . . 4 5 3

    1 5 . 2 . 3 . 2 I n h e r i t a n c e a t t r i b u t e s . . . . . . . . . . . . . . 4 5 4

    1 5 . 2 . 3 . 3 O p a q u e a t t r i b u t e s . . . . . . . . . . . . . . . . 4 5 4

    1 5 . 3 O r g a n i z a t i o n o f c a c t o r s . . . . . . . . . . . . . . . . . . . . . . 4 5 5

    1 5 . 4 D u p l i c a t i n g a n a c t o r a d d r e s s s p a c e . . . . . . . . . . . . . . . . 4 5 6

    1 5 . 4 . 1 T h e r g n D u p p r i m i t i v e . . . . . . . . . . . . . . . . . . . . 4 5 6

    1 5 . 4 . 2 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 7

    1 5 . 4 . 2 . 1 T h e a p p l i c a t i o n . . . . . . . . . . . . . . . . . . 4 5 7

    1 5 . 4 . 2 . 2 T h e c a s e o f u s e r a c t o r s . . . . . . . . . . . . . . 4 5 8

    1 5 . 4 . 2 . 3 T h e c a s e o f s u p e r v i s o r a c t o r s . . . . . . . . . . 4 6 1

    1 5 . 5 R e g i o n s a n d s e g m e n t s . . . . . . . . . . . . . . . . . . . . . . . 4 6 1

    1 5 . 5 . 1 T h e K n O b j D e s c t y p e . . . . . . . . . . . . . . . . . . . . 4 6 1

    1 5 . 5 . 2 C r e a t i n g a n d i n i t i a l i z i n g a r e g i o n f r o m a s e g m e n t . . . . 4 6 2

    1 5 . 5 . 3 C r e a t i n g a r e g i o n a n d m a p p i n g a s e g m e n t o n i t . . . . . 4 6 3

    1 5 . 6 E x p l i c i t a c c e s s t o a s e g m e n t . . . . . . . . . . . . . . . . . . . . 4 6 4

    1 5 . 6 . 1 R e a d i n g d a t a f r o m a s e g m e n t . . . . . . . . . . . . . . . 4 6 4

    1 5 . 6 . 2 W r i t i n g d a t a t o a s e g m e n t . . . . . . . . . . . . . . . . . 4 6 4

    1 5 . 7 E x p l i c i t a c c e s s t o a l o c a l c a c h e . . . . . . . . . . . . . . . . . . . 4 6 5

    1 5 . 7 . 1 F i n d i n g o r c r e a t i n g a l o c a l c a c h e . . . . . . . . . . . . . 4 6 5

    1 5 . 7 . 2 G e t t i n g s t a t i s t i c s o f a c a c h e . . . . . . . . . . . . . . . . 4 6 6

    1 5 . 7 . 3 F l u s h i n g a n d c o n t r o l l i n g a c c e s s t o a l o c a l c a c h e . . . . . 4 6 6

    1 5 . 7 . 4 I n i t i a l i z i n g a l o c a l c a c h e . . . . . . . . . . . . . . . . . . 4 6 8

    1 5 . 7 . 5 R e a d i n g d a t a t h r o u g h a l o c a l c a c h e . . . . . . . . . . . . 4 6 8

  • 8/8/2019 2000 - Programming Under ChorusOS

    18/565

    1 8 C o n t e n t s

    1 5 . 7 . 6 W r i t i n g d a t a t h r o u g h a l o c a l c a c h e . . . . . . . . . . . . 4 6 9

    1 5 . 8 T h e g e n e r i c i n t e r f a c e . . . . . . . . . . . . . . . . . . . . . . . . 4 6 9

    1 5 . 8 . 1 O v e r v i e w . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6 9

    1 5 . 8 . 2 T h e M p C r e a t e t r a n s a c t i o n . . . . . . . . . . . . . . . . 4 7 0

    1 5 . 8 . 2 . 1 A r e q u e s t . . . . . . . . . . . . . . . . . . . . . 4 7 0

    1 5 . 8 . 2 . 2 A r e p l y . . . . . . . . . . . . . . . . . . . . . . 4 7 0

    1 5 . 8 . 3 M p R e l e a s e t r a n s a c t i o n . . . . . . . . . . . . . . . . . . 4 7 0

    1 5 . 8 . 3 . 1 A r e q u e s t . . . . . . . . . . . . . . . . . . . . . 4 7 1

    1 5 . 8 . 3 . 2 A r e p l y . . . . . . . . . . . . . . . . . . . . . . 4 7 1

    1 5 . 8 . 4 M p G e t A c c e s s t r a n s a c t i o n . . . . . . . . . . . . . . . . 4 7 1

    1 5 . 8 . 4 . 1 A r e q u e s t . . . . . . . . . . . . . . . . . . . . . 4 7 1

    1 5 . 8 . 4 . 2 A r e p l y . . . . . . . . . . . . . . . . . . . . . . 4 7 2

    1 5 . 8 . 5 M p P u l l I n t r a n s a c t i o n . . . . . . . . . . . . . . . . . . . 4 7 2

    1 5 . 8 . 5 . 1 A r e q u e s t . . . . . . . . . . . . . . . . . . . . . 4 7 2

    1 5 . 8 . 5 . 2 A r e p l y . . . . . . . . . . . . . . . . . . . . . . 4 7 3

    1 5 . 8 . 6 M p P u s h O u t t r a n s a c t i o n . . . . . . . . . . . . . . . . . 4 7 3

    1 5 . 8 . 6 . 1 A r e q u e s t . . . . . . . . . . . . . . . . . . . . . 4 7 3

    1 5 . 8 . 6 . 2 A r e p l y . . . . . . . . . . . . . . . . . . . . . . 4 7 3

    1 5 . 9 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7 4

    1 5 . 9 . 1 D e a l i n g w i t h k e r n e l r e q u e s t s . . . . . . . . . . . . . . . . 4 7 4

    1 5 . 9 . 2 A m a p p e r . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7 8

    1 5 . 9 . 3 A c l i e n t u s i n g r g n M a p . . . . . . . . . . . . . . . . . . . . 4 8 0

    1 5 . 9 . 4 C l i e n t s u s i n g s g R e a d o r s g W r i t e . . . . . . . . . . . . . 4 8 5

    1 5 . 9 . 5 C l i e n t u s i n g s g F l u s h . . . . . . . . . . . . . . . . . . . . 4 8 7

    1 6 T h e C h o r u s O S d r i v e r f r a m e w o r k 4 8 9

    1 6 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 8 9

    1 6 . 1 . 1 G e n e r a l o v e r v i e w . . . . . . . . . . . . . . . . . . . . . . 4 8 9

    1 6 . 1 . 2 H a r d w a r e o r g a n i z a t i o n . . . . . . . . . . . . . . . . . . . 4 9 1

    1 6 . 1 . 3 S o f t w a r e o r g a n i z a t i o n . . . . . . . . . . . . . . . . . . . . 4 9 1

    1 6 . 2 T h e c o m p o n e n t s o f t h e f r a m e w o r k . . . . . . . . . . . . . . . . . 4 9 3

    1 6 . 2 . 1 G e n e r a l o r g a n i z a t i o n . . . . . . . . . . . . . . . . . . . . 4 9 3

    1 6 . 2 . 2 T h e d e v i c e t r e e . . . . . . . . . . . . . . . . . . . . . . . 4 9 3

    1 6 . 2 . 3 T h e d r i v e r r e g i s t r y m o d u l e . . . . . . . . . . . . . . . . . 4 9 4

    1 6 . 2 . 4 T h e d e v i c e r e g i s t r y m o d u l e . . . . . . . . . . . . . . . . 4 9 6

    1 6 . 2 . 5 F i l e s o r g a n i z a t i o n . . . . . . . . . . . . . . . . . . . . . . 4 9 8

    1 6 . 2 . 6 G e n e r a l t o o l s . . . . . . . . . . . . . . . . . . . . . . . . 5 0 0

    1 6 . 2 . 6 . 1 M e s s a g e l o g g i n g . . . . . . . . . . . . . . . . . 5 0 0

    1 6 . 2 . 6 . 2 A n I m a k e f i l e . . . . . . . . . . . . . . . . . . 5 0 0

  • 8/8/2019 2000 - Programming Under ChorusOS

    19/565

    C o n t e n t s 1 9

    1 6 . 3 D K I c o m m o n s e r v i c e s . . . . . . . . . . . . . . . . . . . . . . . . 5 0 0

    1 6 . 3 . 1 T h e s y n c h r o n i z a t i o n s e r v i c e . . . . . . . . . . . . . . . . 5 0 0

    1 6 . 3 . 2 M e m o r y a l l o c a t i o n . . . . . . . . . . . . . . . . . . . . . 5 0 1

    1 6 . 3 . 2 . 1 A l l o c a t i n g / f r e e i n g s p a c e . . . . . . . . . . . . . 5 0 1

    1 6 . 3 . 3 A l l o c a t i n g p h y s i c a l m e m o r y . . . . . . . . . . . . . . . . 5 0 1

    1 6 . 3 . 4 T h e d e v i c e t r e e . . . . . . . . . . . . . . . . . . . . . . . 5 0 1

    1 6 . 3 . 4 . 1 B r o w s i n g t h e d e v i c e t r e e . . . . . . . . . . . . . 5 0 1

    1 6 . 3 . 4 . 2 M o d i f y i n g t h e d e v i c e t r e e . . . . . . . . . . . . 5 0 2

    1 6 . 3 . 4 . 3 N o d e s p r o p e r t i e s . . . . . . . . . . . . . . . . . 5 0 3

    1 6 . 3 . 4 . 4 E x a m p l e s . . . . . . . . . . . . . . . . . . . . . 5 0 6

    1 6 . 3 . 4 . 5 D e v i c e t r e e h i g h - l e v e l s e r v i c e s . . . . . . . . . . 5 1 0

    1 6 . 3 . 5 D r i v e r r e g i s t r y . . . . . . . . . . . . . . . . . . . . . . . 5 1 1

    1 6 . 3 . 5 . 1 R e g i s t e r i n g a d r i v e r . . . . . . . . . . . . . . . 5 1 1

    1 6 . 3 . 5 . 2 A c c e s s i n g t h e d r i v e r r e g i s t r y . . . . . . . . . . . 5 1 1

    1 6 . 3 . 5 . 3 E x a m p l e . . . . . . . . . . . . . . . . . . . . . . 5 1 2

    1 6 . 3 . 6 D e v i c e r e g i s t r y . . . . . . . . . . . . . . . . . . . . . . . 5 1 3

    1 6 . 3 . 6 . 1 S e r v i c e s d e d i c a t e d t o d e v i c e d r i v e r s . . . . . . . 5 1 3

    1 6 . 3 . 6 . 2 S e r v i c e s f o r d r i v e r c l i e n t s . . . . . . . . . . . . 5 1 4

    1 6 . 3 . 7 O t h e r s e r v i c e s . . . . . . . . . . . . . . . . . . . . . . . . 5 1 6

    1 6 . 3 . 7 . 1 T i m e o u t s . . . . . . . . . . . . . . . . . . . . . 5 1 6

    1 6 . 3 . 7 . 2 B u s y w a i t . . . . . . . . . . . . . . . . . . . . . 5 1 7

    1 6 . 3 . 7 . 3 S y s t e m e v e n t m a n a g e m e n t . . . . . . . . . . . . 5 1 7

    1 6 . 3 . 7 . 4 G l o b a l i n t e r r u p t m a s k i n g . . . . . . . . . . . . 5 1 7

    1 6 . 3 . 7 . 5 T h r e a d p r e e m p t i o n d i s a b l i n g . . . . . . . . . . 5 1 7

    1 6 . 4 D K I s p e c i c s e r v i c e s . . . . . . . . . . . . . . . . . . . . . . . . 5 1 8

    1 6 . 4 . 1 S p e c i c i n p u t / o u t p u t s e r v i c e s . . . . . . . . . . . . . . . 5 1 8

    1 6 . 4 . 2 P r o c e s s o r f a m i l y s p e c i c s e r v i c e s . . . . . . . . . . . . . 5 1 8

    1 6 . 5 D e v i c e D r i v e r I n t e r f a c e ( D D I ) . . . . . . . . . . . . . . . . . . . 5 1 8

    1 6 . 5 . 1 I n t r o d u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . 5 1 8

    1 6 . 5 . 2 C o m m o n b u s s e r v i c e s . . . . . . . . . . . . . . . . . . . . 5 1 9

    1 6 . 5 . 3 C o m m o n b u s p r o p e r t i e s . . . . . . . . . . . . . . . . . . 5 1 9

    1 6 . 5 . 4 C o m m o n b u s d r i v e r e v e n t s . . . . . . . . . . . . . . . . . 5 1 9

    1 6 . 5 . 5 H a n d l e r s . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 0

    1 6 . 5 . 6 C o m m o n b u s d r i v e r s e r v i c e r o u t i n e s . . . . . . . . . . . . 5 2 1

    A S y s t e m c a l l s e r r o r c o d e s 5 2 5

    B I n d e x a n d l i s t o f p r e d e n e d c o n s t a n t s 5 2 7

  • 8/8/2019 2000 - Programming Under ChorusOS

    20/565

    2 0 C o n t e n t s

    C I n d e x a n d l i s t o f p r e d e n e d t y p e s 5 3 1

    D I n d e x a n d l i s t o f p r i m i t i v e s 5 3 3

  • 8/8/2019 2000 - Programming Under ChorusOS

    21/565

    P r e f a c e

    A b o u t t h i s b o o k

    T h i s b o o k i s a p r o g r a m m e r ' s g u i d e : i t p r e s e n t s t h e m a i n a s p e c t s o f t h e s y s t e m

    y o u w i l l f a c e w h e n s t a r t i n g u s i n g i t . I t i n t e n d s t o h e l p y o u t o d e v e l o p y o u r o w n

    a p p l i c a t i o n s f o r C h o r u s O S .

    T h e t e x t i s d i v i d e d i n t o

    P a r t 1 ( c h a p t e r s 1 - 2 ) d e s c r i b e s t h e o v e r a l l s t r u c t u r e o f t h e s y s t e m a n d h o w a

    s y s t e m c a n b e b u i l t , c o n g u r e d a n d b o o t e d ;

    P a r t 2 ( c h a p t e r s 3 - 4 ) s h o w s h o w t o c r e a t e a p p l i c a t i o n s t h a t c a n b e e x e c u t e d

    u n d e r C h o r u s O S .

    P a r t 3 ( c h a p t e r s 5 - 1 3 ) p r e s e n t s t h e a b s t a r c t i o n s o f t h e s y s t e m a n d t h e d i e r -

    e n t s A P I s w h i c h a r e p r o v i d e d t o d e v e l o p a p p l i c a t i o n s i n t e n d e d t o b e e x e c u t e d

    u n d e r C h o r u s O S ( a c t o r s a n d t h r e a d s , m e m o r y m a n a g e m e n t , s y n c h r o n i z a t i o n ,

    c o m m u n i c a t i o n s a n d c r o s s a c t o r i n v o c a t i o n ) .

    P a r t 4 ( c h a p t e r s 1 4 - 1 6 ) p r e s e n t s a d v a n c e d c o n c e p t s ( h a n d l e r s , v i r t u a l m e m o r y

    a n d d r i v e r s ) .

    T o h e l p y o u a l o n g , t h i s b o o k p r o v i d e s n u m e r o u s e x a m p l e s w r i t t e n i n C . I h a v e

    t r i e d t o k e e p t h e s e e x a m p l e s a s s h o r t a n d a s s i m p l e a s p o s s i b l e s o t h a t t h e y a r e

    r e a d a b l e .

    A c o m p r e s s e d a r c h i v e ( t a r / g z i p ) o f t h e v a r i o u s i n c l u d e l e s a n d s o u r c e l e s o f

    t h i s b o o k i s l o c a t e d a t

    h t t p : / / w w w . p p s . j u s s i e u . f r / ~ r i f f l e t / C H O R U S / e x a m p l e s . g z

    Y o u c a n s e n d m e m e s s a g e s e l e c t r o n i c a l l y a t

    r i f f l e t @ p p s . j u s s i e u . f r

    F i n a l l y , f o r m o r e i n f o r m a t i o n a b o u t C h o r u s O S s e e

    h t t p : / / w w w . s u n . c o m / s o f t w a r e / c h o r u s o s

    1

  • 8/8/2019 2000 - Programming Under ChorusOS

    22/565

    2 P r e f a c e

  • 8/8/2019 2000 - Programming Under ChorusOS

    23/565

    C h a p t e r 1

    G e n e r a l p r e s e n t a t i o n

    1 . 1 T h e d e v e l o p m e n t o f C h o r u s

    1 . 1 . 1 H i s t o r y o f t h e p r o j e c t

    T h e C h o r u s s y s t e m s t a r t e d l i f e i n t h e 8 0 ' s a s a r e s e a r c h p r o j e c t a t I N R I A ( I n s t i -

    t u t N a t i o n a l d e R e c h e r c h e e n I n f o r m a t i q u e e t A u t o m a t i s m e ) w h i c h i s a F r e n c h

    p u b l i c c o m p u t i n g r e s e a r c h i n s t i t u t e . C h o r u s a i m e d a t d i s t r i b u t i o n , i n t e g r a t i n g

    c o m m u n i c a t i o n m e c h a n i s m s a t t h e h e a r t o f t h e s y s t e m . C h o r u s V 2 b r o u g h t a

    r s t d i s t r i b u t e d U n i x V 7 l a y e r w i t h i n t h e s y s t e m .

    T h e " C h o r u s s y s t e m e s " c o m p a n y w a s f o u n d e d a t t h e b e g i n n i n g o f 1 9 8 7 b y H u -

    b e r t Z i m m e r m a n n , M i c h e l G i e n a n d a s m a l l t e a m . T h i s l e d t o t h e C h o r u s / M i X

    V 3 . 2 s y s t e m b e i n g r e l e a s e d i n 1 9 8 9 ; t h i s w a s a d i s t r i b u t e d , r e a l - t i m e s y s t e m p r o -

    v i d i n g b i n a r y c o m p a t i b i l i t y w i t h S C O s y s t e m s o n I n t e l b a s e d m a c h i n e s . V a r i o u s

    a v o r s o f t h i s s y s t e m h a v e b e e n u s e d w i t h i n d i e r e n t P A B X ' s o f A l c a t e l . O t h e r

    a v o r s o f t h e s y s t e m h a v e b e e n u s e d t o e q u i p J V C k a r a o k e m a c h i n e s i n J a p a n .

    I n 1 9 8 9 , C h o r u s s y s t e m e s s t a r t e d a p a r t n e r s h i p w i t h U n i s y s i n o r d e r t o p r o v i d e

    a S i n g l e S y s t e m I m a g e U n i x s y s t e m o n t o p o f M P P m a c h i n e s . I n t h e s a m e

    t i m e f r a m e , t h e U n i x b a s i s e v o l v e d f r o m S V R 3 . 2 t o S V R 4 . 0 . T h e U n i s y s O P U S

    m a c h i n e r a n t h i s t y p e o f s y s t e m , t h e I C L G o l d r u s h m a c h i n e a l s o r a n a v a r i a n t

    o f t h a t s y s t e m .

    A j o i n t - d e v e l o p m e n t e o r t s e t u p w i t h N o v e l l l e d t o t h e d e v e l o p m e n t o f a C h o r u s

    b a s e d S V R 4 . 2 E S / M P s y s t e m w h i c h w a s a b a n d o n e d w h e n N o v e l l c e a s e d a l l U n i x

    d e v e l o p m e n t a c t i v i t i e s .

    I n 1 9 9 4 , C h o r u s s y s t e m e s f o c u s s e d i t s a c t i v i t i e s o n t h e m i c r o - k e r n e l a t t h e h e a r t

    o f t h e s y s t e m , t a r g e t i n g r e a l - t i m e e m b e d d e d a p p l i c a t i o n s . S i n c e t h e n , a s m a l l

    3

  • 8/8/2019 2000 - Programming Under ChorusOS

    24/565

    4 C h a p t e r 1 . G e n e r a l p r e s e n t a t i o n

    O S l a y e r p r o v i d i n g s o m e l i m i t e d P O S I X A P I ' s b a s e d o n F r e e B S D s o f t w a r e h a s

    b e e n u s e d t o d e l i v e r t h e C h o r u s O S s y s t e m . T h i s h a s b e e n u s e d i n s o m e l a r g e

    e n v i r o n m e n t s , m a i n l y b y T e l e c o m E q u i p m e n t M a n u f a c t u r e r s s u c h a s L u c e n t ,

    N o r t e l a n d o t h e r s . H o w e v e r , i t i s s t i l l u s e d i n s o m e l o w - e n d d e v i c e s s u c h a s

    w e b p h o n e s ( w i t h a J a v a e n v i r o n m e n t ) , s e t - t o p b o x e s o r p o i n t o f s a l e s d e v i c e s .

    I n 1 9 9 7 , C h o r u s s y s t e m s , a n d i t s 8 0 e m p l o y e e s i n F r a n c e , U S A a n d J a p a n , h a s

    b e e n a c q u i r e d b y S u n M i c r o s y s t e m s I n c .

    1 . 1 . 2 T h e S u n E m b e d d e d W o r k s h o p

    T h e S u n E m b e d d e d W o r k s h o p ( S E W ) p r o v i d e s a s a r s t c o m p o n e n t a s e t o f

    t o o l s a n d u t i l i t i e s f o r d e v e l o p i n g a n d m a n a g i n g a p p l i c a t i o n s i n t e n d e d t o r u n

    o n a h i g h - p e r f o r m a n c e o p e r a t i n g s y s t e m ( t h e C h o r u s O p e r a t i n g S y s t e m ) w h i c h

    c o n s t i t u t e s t h e s e c o n d c o m p o n e n t o f t h e w o r k s h o p . T h e r s t c o m p o n e n t i s a

    h o s t - t a r g e t d e v e l o p m e n t e n v i r o n m e n t a n d t h e s e c o n d o n e ( C h o r u s O S ) i s a r e a l -

    t i m e m o d u l a r o p e r a t i n g s y s t e m . T h i s b o o k i s b a s e d o n S E W 2 . 1 a n d t h e 4 . 0

    r e l e a s e o f C h o r u s O S .

    1 . 2 C o n g u r a t i o n s

    A t y p i c a l i n s t a l l a t i o n o f t h e S E W r e q u i r e s a m i n i m u m h a r d w a r e c o n g u r a t i o n

    c o n s i s t i n g o f t w o m a c h i n e s c o n n e c t e d b y a E t h e r n e t n e t w o r k o r a s e r i a l l i n e :

    a t a r g e t P C / A T w h i c h w i l l r u n a C h o r u s O S o p e r a t i n g s y s t e m i n s t a n c e a n d

    a p p l i c a t i o n s . T h e h a r d w a r e p r e r e q u i s i t e s f o r t h i s P C a r e a s f o l l o w s :

    - a p r o c e s s o r o f o n e o f t h e f o l l o w i n g t y p e s : I n t e l 3 8 6 , 4 8 6 o r P e n t i u m ;

    - a n E t h e r n e t b o a r d ( S M C E t h e r E Z o r N o v e l l N E 2 0 0 0 ) f o r d o w n l o a d i n g t h e

    s y s t e m a n d a p p l i c a t i o n s w h i c h o t h e r w i s e w i l l b e l o a d e d f r o m a d i s k e t t e ;

    - a p p r o x i m a t e l y 4 m e g a b y t e s o f m a i n m e m o r y ;

    - p o s s i b l y a o p p y d i s k ( 3 1 / 4 i n c h ) t o b o o t t h e s y s t e m .

    O f c o u r s e S E W r u n s o n h a r d w a r e c o n g u r a t i o n s o t h e r t h a n t h i s t r i v i a l b u t

    c o m m o n e x a m p l e . B o a r d s o r m a c h i n e s b a s e d o n S P A R C o r P P C m a y a l s o b e

    u s e d ;

    a h o s t d e v e l o p m e n t m a c h i n e w h i c h w i l l b e u s e d f o r b u i l d i n g t h e C h o r u s O S

    s y s t e m b o o t a b l e i m a g e , f o r d e v e l o p i n g a p p l i c a t i o n s a n d d o w n l o a d i n g t h e s e a p -

    p l i c a t i o n s . T h e f o l l o w i n g h o s t m a c h i n e s m a y b e u s e d :

    - S u n / S p a r c s t a t i o n w i t h S o l a r i s s y s t e m ( v e r s i o n > 2 . 5 ) o r S u n O S ( v e r s i o n

    > 4 . 1 ) ;

    - P C / A T w i t h M i c r o s o f t W i n d o w s N T 4 . 0 .

  • 8/8/2019 2000 - Programming Under ChorusOS

    25/565

    1 . 3 . T h e c r o s s d e v e l o p m e n t e n v i r o n m e n t 5

    T h i s t y p e o f b a s i c c o n g u r a t i o n c o r r e s p o n d s t o t h e f o l l o w i n g d i a g r a m :

    o p e r a t i n g s y s t e m

    h o s t m a c h i n e

    C H O R U S k e r n e l

    t a r g e t m a c h i n e

    l e s y s t e m

    n e t w o r k

    S y s t e m

    a p p l i c a t i o n s

    U s e r a p p l i c a t i o n s

    r s h t f t p r a r p

    N F S A p p l i c a t i o n s

    a n d

    T h e c o n g u r a t i o n m a y b e m o r e c o m p l i c a t e d : f o r e x a m p l e t h e b o o t s e r v e r u s e d

    f o r l o a d i n g t h e s y s t e m a n d t h e h o s t u s e d f o r d e v e l o p m e n t m a y b e s e p a r a t e

    m a c h i n e s . F u r t h e r m o r e , o t h e r m a c h i n e s m a y b e u s e d t o N F S m o u n t s p e c i c l e

    s y s t e m s .

    1 . 3 T h e c r o s s d e v e l o p m e n t e n v i r o n m e n t

    T h e S E W p r o v i d e s c o m p l e t e s u p p o r t f o r d e v e l o p i n g C a n d C + + a p p l i c a t i o n s

    i n t e n d e d t o r u n o n a C h o r u s O S m a c h i n e . I t i n c l u d e s :

    a C a n d C + + d e v e l o p m e n t t o o l - c h a i n c o m p r i s i n g G N U g c c a n d g + + c r o s s

    c o m p i l e r s ( g e n e r a t i n g e x e c u t a b l e c o d e o n t h e h o s t s y s t e m f o r a g i v e n t y p e o f

    t a r g e t m a c h i n e ) ;

    a C a n d C + + s y m b o l i c d e b u g g e r : X R A Y f o r C h o r u s O S ;

    a n e m b e d d e d d e b u g g e r f o r s y s t e m a p p l i c a t i o n s ;

    c o n g u r a t i o n t o o l s f o r b u i l d i n g s y s t e m a r c h i v e s ( d e s c r i b e d i n c h a p t e r 2 ) ;

    d i e r e n t l i b r a r i e s : t h r e a d s a f e C + + , t h r e a d s a f e A N S I - C , a s u b s e t o f P O S I X

    1 0 0 3 . 1 a , P O S I X 1 0 0 3 . 1 b ( t i m e r s , m e s s a g e q u e u e s , s e m a p h o r e s a n d s h a r e d m e m -

    o r y ) , P O S I X 1 0 0 3 . 1 c ( P o s i x t h r e a d s ) , t h r e a d s a f e m a t h e m a t i c a l A N S I - C , C + +

    i o s t r e a m , B S D s o c k e t s , X 1 1 ;

    a p p l i c a t i o n m a n a g e m e n t t o o l s : n e t b o o t ( f o r r e m o t e l y b o o t i n g t h e C h o r u s -

    O S s y s t e m o n t h e t a r g e t m a c h i n e ) , r e m o t e s h e l l , d e f a u l t c o n s o l e , m o n i t o r i n g ,

    l o g g i n g , p r o l i n g a n d b e n c h m a r k i n g .

    1 . 4 M a i n c h a r a c t e r i s t i c s o f C h o r u s O S

    I t i s m o d u l a r : i t c a n e i t h e r s c a l e d o w n t o v e r y s m a l l i m p l e m e n t a t i o n s f o r e m -

    b e d d i n g o r s c a l e u p t o P O S I X p l a t f o r m s .

  • 8/8/2019 2000 - Programming Under ChorusOS

    26/565

    6 C h a p t e r 1 . G e n e r a l p r e s e n t a t i o n

    I t i s h i g h l y c o n g u r a b l e : t h e s y s t e m i s d i v i d e d i n t o m o d u l e s w h i c h c o o p e r a t e

    i n o r d e r t o o e r d i e r e n t f e a t u r e s , e . g . s p e c i c f u n c t i o n a l i t i e s o f t h e s y s t e m .

    W h e n b u i l d i n g a s y s t e m , i t i s p o s s i b l e t o s e l e c t t h e f e a t u r e s w h i c h w i l l b e i n t e -

    g r a t e d i n t o t h e s y s t e m . T h u s , t h e s y s t e m m a y b e a d j u s t e d t o m e e t t h e e x a c t

    n e e d s o f t h e a p p l i c a t i o n s w h i c h a r e i n t e n d e d t o r u n o n i t . T h i s w a y , m e m o r y

    m a y b e s a v e d a n d p e r f o r m a n c e i m p r o v e d . F u r t h e r m o r e , e a c h m o d u l e d e n e s

    s y s t e m p a r a m e t e r s w h i c h a e c t t h e b e h a v i o r o f t h e s y s t e m : t h e s e p a r a m e t e r s

    m a y b e s e t t o s p e c i c v a l u e s w h e n b u i l d i n g t h e s y s t e m .

    I t i s a r e a l - t i m e s y s t e m : s c h e d u l i n g p o l i c i e s a r e b a s e d o n x e d p r i o r i t i e s o f

    t h e c o m p o n e n t s o f a n a p p l i c a t i o n , k e r n e l c a l l s a r e b o u n d e d i n t i m e , i n t e r r u p t

    l a t e n c y i s k e p t m i n i m a l a n d i t i s p o s s i b l e t o a t t a c h i n t e r r u p t h a n d l e r s t o a n

    a p p l i c a t i o n .

    I t s u p p o r t s s o m e l e v e l o f t r a n s p a r e n t d i s t r i b u t i o n : i t a l l o w s a p p l i c a t i o n s

    r u n n i n g o n d i e r e n t m a c h i n e s t o c o o p e r a t e i n a t r a n s p a r e n t w a y i n s i d e a s e t o f

    m a c h i n e s i n t e r c o n n e c t e d o n a n e t w o r k a n d c o n s t i t u t i n g a C h o r u s d o m a i n .

    I t i n c o r p o r a t e s s e v e r a l f e a t u r e s w h i c h a l l o w h i g h a v a i l a b i l i t y o f t h e s y s t e m : t h e s e

    f e a t u r e s i n c l u d e m e m o r y p r o t e c t i o n m e c h a n i s m s , h o t r e s t a r t a l l o w i n g a p p l i c a -

    t i o n s t o r e s u m e e x e c u t i o n a f t e r a s y s t e m c r a s h f r o m a c o n s i s t e n t s t a t e , a n d

    d y n a m i c r e c o n g u r a t i o n .

    1 . 5 T h e m a i n a b s t r a c t i o n s o f C h o r u s O S

    W e r s t o u t l i n e t h e n a m i n g s c h e m e s u s e d i n t h e s y s t e m ( t h e y w i l l b e p r e s e n t e d

    i n m o r e d e t a i l i n c h a p t e r 5 ) :

    u n i q u e i d e n t i e r s : i n t h e c u r r e n t v e r s i o n , t h e y c o n s i s t o f 6 4 b i t o b j e c t s ( a

    3 2 b i t h e a d a n d a 3 2 b i t t a i l ) ;

    c a p a b i l i t i e s : t h e y a r e c o m p o s e d o f a u n i q u e i d e n t i e r a n d a k e y w h i c h i s

    a l s o a 6 4 b i t o b j e c t ( a 3 2 b i t h e a d a n d a 3 2 b i t t a i l ) ;

    l o c a l i d e n t i e r s : t h e s e s m a l l i n t e g e r s m a y b e i n t e r p r e t e d i n t h e c o n t e x t o f

    a g i v e n a p p l i c a t i o n .

    L e t u s n o w b r i e y s u m m a r i z e t h e m a i n a b s t r a c t i o n s p r o v i d e d b y t h e s y s t e m ,

    w h i c h w e w i l l s t u d y i n m o r e d e t a i l i n l a t e r c h a p t e r s o f t h i s b o o k .

    a c t o r s : f r o m t h e s y s t e m ' s p o i n t o f v i e w , a n a c t o r i s t h e u n i t o f r e s o u r c e e n -

    c a p s u l a t i o n . A n a c t o r i s a r e p o s i t o r y o f r e s o u r c e s s u c h a s a n a d d r e s s s p a c e o r

    p o r t s f o r c o m m u n i c a t i o n . I n o t h e r w o r d s , i t d e n e s a v i r t u a l m a c h i n e . F r o m

    t h e u s e r ' s p o i n t o f v i e w , a n a c t o r c o n s t i t u t e s t h e u n i t o f m o d u l a r i z a t i o n o f a p -

    p l i c a t i o n s . A c t o r s a r e i d e n t i e d b y t h e k e r n e l b y t h e i r c a p a b i l i t i e s , a n d s o m e

    a p p l i c a t i o n s u s e l o c a l i d e n t i e r s . T h e k e r n e l p r o v i d e s a n i n t e r f a c e f o r a t t a c h i n g

  • 8/8/2019 2000 - Programming Under ChorusOS

    27/565

    1 . 5 . T h e m a i n a b s t r a c t i o n s o f C h o r u s O S 7

    r e s o u r c e s t o a n a c t o r . I t i s i m p o r t a n t t o n o t e t h a t u n l i k e a U n i x p r o c e s s , a C h o -

    r u s a c t o r d o e s n o t e x e c u t e a n y t h i n g . A s w e w i l l s e e , t h e s y s t e m d i s t i n g u i s h e s

    b e t w e e n u s e r a n d s u p e r v i s o r a c t o r s d e p e n d i n g o n w h e t h e r t h e y u s e a p r i v a t e

    a d d r e s s s p a c e o r s h a r e t h e k e r n e l a d d r e s s s p a c e . A c t o r s a r e p r e s e n t e d i n d e t a i l

    i n c h a p t e r 6 ;

    t h r e a d s : a t h r e a d i s t h e u n i t o f e x e c u t i o n a n d c o r r e s p o n d s t o a s i n g l e o w o f

    s e q u e n t i a l e x e c u t i o n o f a p r o g r a m . T h r e a d s a r e p a r t i c u l a r r e s o u r c e s o f a c t o r s :

    w h e n i t i s c r e a t e d , a t h r e a d i s a t t a c h e d t o a n a c t o r a n d w i l l r e m a i n a t t a c h e d

    t o t h i s a c t o r d u r i n g i t s e n t i r e l i f e t i m e . F o r e x a m p l e , a c l a s s i c U n i x p r o c e s s c o r -

    r e s p o n d s t o a n a c t o r w h e r e a s i n g l e t h r e a d i s e x e c u t i n g . A t h r e a d i s i d e n t i e d

    b y a l o c a l i d e n t i e r i n t h e c o n t e x t o f i t s a c t o r . T h u s , n a m i n g a t h r e a d r e q u i r e s

    n a m i n g i t s a c t o r a n d i t s l o c a l i d e n t i e r i n t h a t a c t o r .

    A n a c t o r m a y c o n t a i n a n a r b i t r a r y n u m b e r o f t h r e a d s , p o s s i b l y n o n e . T h r e a d s

    m a y b e d y n a m i c a l l y c r e a t e d a n d d e l e t e d . T h r e a d s a r e p r e s e n t e d i n c h a p t e r 8 ;

    m e s s a g e s : m e s s a g e s a r e u n t y p e d s e q u e n c e s o f b y t e s t h a t c a n b e e x c h a n g e d

    b e t w e e n t h r e a d s ;

    p o r t s : t h e s e a r e t h e c o m m u n i c a t i o n e n d p o i n t s w h e r e m e s s a g e s a r e s e n t t o

    a n d r e c e i v e d f r o m b y t h r e a d s . P o r t s a r e r e s o u r c e s o f a c t o r s : a t a n y t i m e , a p o r t

    i s a t t a c h e d t o a s i n g l e a c t o r . P o r t s a r e t h e o n l y r e s o u r c e s t h a t c a n m i g r a t e f r o m

    o n e a c t o r t o a n o t h e r . C h o r u s O S p r o v i d e s t w o s e m a n t i c s f o r c o m m u n i c a t i o n v i a

    p o r t s : t h e c o m m u n i c a t i o n m a y b e s y n c h r o n o u s ( R P C m o d e ) o r a s y n c h r o n o u s

    ( s e n d / r e c e i v e m o d e ) . M e s s a g e s a r e s e n t b y a t h r e a d f r o m o n e s o u r c e p o r t t o a

    d e s t i n a t i o n p o r t . P o r t s a r e n a m e d b y u n i q u e i d e n t i e r s o r b y l o c a l i d e n t i e r s

    i n t h e c o n t e x t o f a p a r t i c u l a r a c t o r ;

    p o r t g r o u p s : a p o r t g r o u p i s a s e t o f p o r t s . C h o r u s O S a l l o w s a m e s s a g e

    t o b e s e n t f r o m a p o r t t o a p o r t g r o u p . C h o r u s O S p r o v i d e s v a r i o u s s e m a n t i c s

    f o r s e n d i n g a m e s s a g e t o a p o r t g r o u p : t h e m e s s a g e m a y b e a d d r e s s e d t o a l l

    m e m b e r s o f t h e p o r t g r o u p s ( b r o a d c a s t a d d r e s s i n g ) o r t o o n e p o r t o f t h e g r o u p

    ( u n i c a s t o r f u n c t i o n a l a d d r e s s i n g ) w i t h d i e r e n t m o d e s f o r t h e s e l e c t i o n o f t h e

    d e s t i n a t i o n p o r t . C a p a b i l i t i e s a r e u s e d f o r n a m i n g p o r t g r o u p s . T h e s e d i e r e n t

    a b s t r a c t i o n s r e l a t e d t o c o m m u n i c a t i o n a r e d e s c r i b e d i n c h a p t e r 1 3 ;

    m e m o r y r e g i o n s : a m e m o r y r e g i o n i s a c o n t i g u o u s r a n g e o f l o g i c a l v a l i d

    a d d r e s s e s i n t h e a d d r e s s s p a c e o f a n a c t o r : t h e a d d r e s s s p a c e o f a n a c t o r i s t h u s

    d i v i d e d i n t o n o n o v e r l a p p i n g r e g i o n s . R e g i o n s m a y b e d y n a m i c a l l y c r e a t e d a n d

    d e l e t e d i n a n a c t o r b y t h r e a d s . T h e s e r v i c e s o e r e d f o r m e m o r y m a n a g e m e n t

    a r e p r e s e n t e d i n c h a p t e r s 7 a n d 1 5 .

    T h e s e d i e r e n t a b s t r a c t i o n s a n d t h e i r r e l a t i o n s h i p s a r e s u m m a r i z e d i n t h e f o l -

    l o w i n g g u r e :

  • 8/8/2019 2000 - Programming Under ChorusOS

    28/565

    8 C h a p t e r 1 . G e n e r a l p r e s e n t a t i o n

    C h o r u s d o m a i n

    a n e m p t y a c t o r

    b r o a d c a s t t o t h e g r o u p G 2

    m e s s a g e s e n t i n p o i n t t o p o i n t m o d e

    t h r e a d s

    p o r t g r o u p G 2

    a c t o r A 1

    r e g i o n s

    a c t o r A 2

    a c t o r B 1

    G 1

    m e s s a g e

    s i t e A s i t e B

    n e t w o r k

    w h e r e

    - t h e C h o r u s d o m a i n c o n s i s t s o f t w o s i t e s n a m e d A a n d B w h e r e a C h o r u s O S i s

    r u n n i n g ;

    - t h e a c t o r A 1 b e l o n g s t o t h e s i t e A a n d e n c a p s u l a t e s t w o p o r t s , t w o m e m o r y

    r e g i o n s a n d t w o t h r e a d s ; t h e a c t o r A 2 o n s i t e A e n c a p s u l a t e s t w o p o r t s , t h r e e

    r e g i o n s a n d o n e t h r e a d . T h e a c t o r B 1 b e l o n g s t o t h e s i t e B a n d e n c a p s u l a t e s

    t h r e e p o r t s , o n e r e g i o n a n d t h r e e t h r e a d s a n d n a l l y , t h e r e i s a n e m p t y a c t o r

    o n s i t e B ( t h i s a c t o r j u s t c o n t a i n s a p o r t ) ;

    - t w o p o r t g r o u p s a r e d e n e d : t h e g r o u p G 1 c o n t a i n s t h r e e p o r t s t h a t a r e a l l

    l o c a t e d o n t h e s i t e A a n d t h e g r o u p G 2 c o n t a i n s o n e p o r t l o c a t e d o n t h e s i t e A

    a n d a n o t h e r o n e o n t h e s i t e B ;

    - o n e m e s s a g e i s s e n t i n o n e - t o - o n e c o m m u n i c a t i o n a n d a n o t h e r o n e i s b r o a d c a s t

    t o a l l p o r t s o f t h e g r o u p G 2 .

    1 . 6 T h e a r c h i t e c t u r e o f C h o r u s O S

    1 . 6 . 1 O v e r v i e w

    D e p e n d i n g o n i t s c o n g u r a t i o n o p t i o n s , a g i v e n i n s t a n c e o f t h e C h o r u s O S o p e r -

    a t i n g s y s t e m c o n s i s t s o f a k e r n e l a n d d i e r e n t a c t o r s , c a l l e d C h o r u s O S a c t o r s .

    T h e s e d i e r e n t a c t o r s c o n t r i b u t e t o t h e i m p l e m e n t a t i o n o f t h e s e l e c t e d s e r v i c e s .

    T h e C h o r u s O S i t s e l f m a y b e d i v i d e d i n t o t w o d i e r e n t l a y e r s , w h i l e a t h i r d l a y e r

    c o r r e s p o n d s t o t h e a p p l i c a t i o n s .

    A t y p i c a l c o n g u r a t i o n c o r r e s p o n d s t o t h e f o l l o w i n g p i c t u r e , w h e r e t h e e d g e s

    a r e l a b e l l e d w i t h t h e n a m e s o f s o m e o f t h e f u n c t i o n s o f t h e c o r r e s p o n d i n g A P I .

  • 8/8/2019 2000 - Programming Under ChorusOS

    29/565

    1 . 6 . T h e a r c h i t e c t u r e o f C h o r u s O S 9

    C I N I T

    A p p l i c a t i o n

    a w a i t

    a f e x e c

    a f e x e c

    o p e n

    s h m o p e n

    m o u n t

    r o u t e

    c o m m a n d s

    o p e n

    r e a d

    m o u n t

    i o c t l

    a c t o r C r e a t e

    s h m o p e n

    o p e n

    K E R N P D

    d r i v e r s

    A P P L I C A T I O N L A Y E R

    N U C L E U S L A Y E R

    O S L A Y E R

    R D B C

    D m c 1 4 6 8 1 8 D i 8 2 5 4

    I O M

    S H M R E P

    A M

    A D M I N

    T h e r e f o r e , c o n g u r i n g a s y s t e m c o n s i s t s m a i n l y o f d e n i n g w h i c h a c t o r s w i l l

    b e c r e a t e d w h e n l o a d i n g t h e s y s t e m , a n d w h i c h m o d u l e s i n e a c h a c t o r w i l l

    b e i n c l u d e d : t h i s p r o c e s s r e e c t s b o t h t h e c o n g u r a b i l i t y a n d m o d u l a r i t y o f

    C h o r u s O S .

    1 . 6 . 2 T h e n u c l e u s l a y e r

    T h i s s e c t i o n d e s c r i b e s t h e d i e r e n t c o m p o n e n t s o f t h i s l a y e r w h i c h p r o v i d e t h e

    b a s i c s e r v i c e s , a s s h o w n i n t h e a b o v e p i c t u r e .

    1 . 6 . 2 . 1 T h e m i c r o - k e r n e l

    T h e l o w - l e v e l b a s i c s e r v i c e s a r e p r o v i d e d b y a c o r e e x e c u t i v e , m i c r o - k e r n e l c o r -

    r e s p o n d i n g t o t h e K E R N a c t o r i n t h e p i c t u r e . I t p r o v i d e s t h e s e r v i c e s r e q u i r e d

    t o s u p p o r t r e a l - t i m e a p p l i c a t i o n s : m a n a g e m e n t o f a c t o r s , t h r e a d s , s c h e d u l i n g ,

    m e m o r y , s y n c h r o n i z a t i o n , c r o s s a c t o r i n v o c a t i o n s ( L A P s ) , a n d s o o n .

    T h i s e x e c u t i v e s u p p o r t s m u l t i p l e i n d e p e n d e n t a p p l i c a t i o n s r u n n i n g e i t h e r a s

    s y s t e m a p p l i c a t i o n s ( t h a t i s , s h a r i n g t h e a d d r e s s s p a c e o f t h e k e r n e l ) o r a s u s e r

    a p p l i c a t i o n s . W h e n b u i l d i n g a g i v e n i n s t a n c e o f t h e k e r n e l , i t i s p o s s i b l e t o

    a d d s e p a r a t e m o d u l e s p r o v i d i n g s p e c i c s e r v i c e s m e e t i n g t h e n e e d s o f t h e a p -

    p l i c a t i o n s i n t e n d e d t o b e e x e c u t e d o n t h e s y s t e m . T h e s e m o d u l e s c o r r e s p o n d

    t o o p t i o n a l f e a t u r e s w h i c h m a y b e s e l e c t e d w h e n c o n g u r i n g t h e s y s t e m ( s e e

    1 . 6 . 5 a n d 2 . 4 ) .

  • 8/8/2019 2000 - Programming Under ChorusOS

    30/565

    1 0 C h a p t e r 1 . G e n e r a l p r e s e n t a t i o n

    1 . 6 . 2 . 2 T h e d r i v e r s

    T h e n u c l e u s l a y e r a l s o i n c l u d e s d r i v e r s w h i c h r e p r e s e n t t h e h a r d w a r e c o m p o -

    n e n t s . T h e s e d r i v e r s a r e i m p l e m e n t e d a s s e p a r a t e a c t o r s ( f o r e x a m p l e , i n t h e

    p i c t u r e t h e a c t o r s D i 8 2 5 4 a n d D m c 1 4 6 8 1 8 ) : t h e y a l l o w t h e o p e r a t i n g s y s -

    t e m t o i n t e r a c t w i t h t h e h a r d w a r e c o m p o n e n t s . M o r e i n f o r m a t i o n o n d r i v e r s i s

    g i v e n i n c h a p t e r 1 6 .

    1 . 6 . 2 . 3 T h e P D a c t o r

    F i n a l l y , t h i s l a y e r i n c l u d e s t h e P D a c t o r w h i c h o e r s a h i g h l e v e l A P I ( s e e

    c h a p t e r 1 0 ) t o m a n a g e p e r - t h r e a d o r p e r - a c t o r p r i v a t e d a t a . O n e o f t h e m a i n

    u s e s o f t h e s e d a t a i s f o r t h e d e n i t i o n o f d e s t r u c t i o n h a n d l e r s f o r a c t o r s . T h i s

    s e r v i c e i s a l s o u s e d t o r e t r i e v e t h e l e c o n t e x t o f e x t e n d e d a c t o r s .

    1 . 6 . 3 T h e O S l a y e r

    1 . 6 . 3 . 1 O v e r v i e w

    T h i s l a y e r p r o v i d e s h i g h e r l e v e l s e r v i c e s : m a n a g e m e n t o f i n p u t / o u t p u t , n e t w o r k ,

    l e s y s t e m s , a d m i n i s t r a t i o n . I t a l s o o e r s a h i g h l e v e l m a n a g e m e n t o f a c t o r s . I t

    i s c o m p o s e d o f d i e r e n t s p e c i a l i z e d a c t o r s i n t e r a c t i n g w i t h t h e n u c l e u s l a y e r .

    W i t h i n C h o r u s O S 4 . 0 , t h e a r c h i t e c t u r e o f t h e O S l a y e r h a s e v o l v e d t o s a t i s f y

    t h e f o l l o w i n g o b j e c t i v e s :

    a c h i e v e a t r u e m o d u l a r i t y t o e n f o r c e c o n g u r a b i l i t y ;

    e n h a n c e I / O p e r f o r m a n c e ;

    r e m o v e u n u s e d f e a t u r e s .

    T h e m a i n a s p e c t s o f t h e e v o l u t i o n o f t h i s a r c h i t e c t u r e s i n c e t h e C h o r u s O S 3 . 2

    r e l e a s e a r e t h e f o l l o w i n g :

    a l l c r o s s a c t o r i n v o c a t i o n s a r e n o w b a s e d o n L A P i n v o c a t i o n s . T h e t r a p

    m e c h a n i s m i s n o l o n g e r u s e d : t h i s m e a n s t h a t n o b i n a r y c o m p a t i b i l i t y w i t h

    p r e v i o u s r e l e a s e s o f C h o r u s O S i s p r o v i d e d ;

    t h e A M a n d I O M a c t o r s a r e t r u l y i n d e p e n d e n t . T h u s , a s y s t e m m a y b e

    c o n g u r e d w i t h o n e o r t h e o t h e r o r b o t h a c t o r s : s e r v i c e s p r o v i d e d b y e a c h a c t o r

    a r e c l e a r l y i d e n t i e d . T h e A M i s a r e g u l a r c l i e n t o f t h e I O M : i t u s e s s t a n d a r d

    c a l l s ( o p e n , r e a d , . . . ) t o a c c e s s l e s . T h e I O M i s m o r e m o d u l a r : d i e r e n t

    i n d e p e n d e n t f e a t u r e s a l l o w s p e c i c s e r v i c e s t o b e s e l e c t e d ;

    a n e w e m b e d d e d a c t o r ( A D M I N h a s b e e n a d d e d t o p e r f o r m a d m i n i s t r a t i v e t a s k s .

    W e n o w d e t a i l t h e v a r i o u s a c t o r s s h o w n i n t h e p i c t u r e , w h i c h m a y o r m a y n o t

    b e p r e s e n t i n a g i v e n s y s t e m , d e p e n d i n g o n t h e c o n g u r a t i o n t h a t h a s b e e n

    a d o p t e d ( a n d t h e s y s t e m a c t o r s t h a t h a v e b e e n e m b e d d e d i n t h e c o r r e s p o n d i n g

    a r c h i v e ) .

  • 8/8/2019 2000 - Programming Under ChorusOS

    31/565

    1 . 6 . T h e a r c h i t e c t u r e o f C h o r u s O S 1 1

    1 . 6 . 3 . 2 T h e C I N I T a c t o r

    I t r s t p l a y s t h e r o l e o f a r e m o t e - s h e l l d a e m o n a n d l i s t e n s f o r c o m m a n d s t r a n s -

    m i t t e d b y u s e r s v i a t h e r s h c o m m a n d . I t a l s o a c t s a s a c o m m a n d i n t e r p r e t e r .

    T h i s a c t o r u s e s t h e s e r v i c e s p r o v i d e d b y t h e A M , t h e I O M a n d t h e A D M I N

    a c t o r s . I t i s p r e s e n t e d i n d e t a i l i n 3 . 1 .

    1 . 6 . 3 . 3 T h e I O M a c t o r

    T h i s a c t o r p r o v i d e s m a n a g e m e n t o f d i e r e n t i n p u t / o u t p u t o p e r a t i o n s , d e p e n d -

    i n g o n t h e r e l a t e d f e a t u r e s t h a t a r e s e l e c t e d . I t h a s b e e n u p g r a d e d w i t h F r e e B S D

    2 . 2 s o u r c e c o d e . I t i n c l u d e s l e s y s t e m s ( U F S , N F S , M S D O S l e s y s t e m ) , d i f -

    f e r e n t P O S I X o p e r a t i o n s o n l e s , s o c k e t s , m e s s a g e q u e u e s , s h a r e d m e m o r y o r

    p i p e s .

    1 . 6 . 3 . 4 T h e A M a c t o r

    T h e a c t o r m a n a g e r i s a n o p t i o n a l c o m p o n e n t o f t h e O S l a y e r ( c o r r e s p o n d i n g

    t o t h e A C T O R E X T E N D E D M N G T f e a t u r e ) w h i c h s e r v e s c a l l s r e l a t e d t o a c t o r m a n -

    a g e m e n t l i k e a f e x e c , a k i l l a n d a c r e a t e . I t s i n t e r f a c e p r o v i d e s a h i g h l e v e l

    s e r v i c e f o r c r e a t i n g , l o a d i n g , r u n n i n g a n d d e l e t i n g a c t o r s . A c t o r s t h a t a r e c r e -

    a t e d b y t h i s s p e c i c a c t o r a r e c o m m o n l y c a l l e d c a c t o r s o r . U n l i k e a c t o r s

    c r e a t e d b y d i r e c t l y i n v o