[26471] 2021-07-08_一次脑残的记录:Linux中实时任务调度与优先级

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2021-07-08_一次脑残的记录:Linux中实时任务调度与优先级 L i n u x   L i n u x   2 0 2 1 - 0 7 - 0 8 I O T   I O T   L i n u x   1 .   2 .   L i n u x   3 .   C P U 4 .   ( S M P )   5 .   L i n u x   ( I O )   L i n u x     x 8 6     线     使     线     P S :     L i n u x   线 ( ) 线 线 I O T   .   +     +   C F S C P U C P U S C H E D _ O T H E R 0
                  1 .   S C H E D _ F I F O   C P U   ; 2 .   S C H E D _ R R   S C H E D _ F I F O     C P U     C P U   ;         L i n u x   线 线     N 1 / N N S C H E D _ O T H E R L i n u x S C H E D _ F I F O S C H E D _ O T H E R L i n u x
        线 使 使 ( ) 1 .   线 ( ) 线   0 - 9 9 1 0 0 - 1 3 9 0   ~   1 3 9 0   ~   9 9 s t r u c t   s c h e d _ p a r a m   p a r a m ; p a r a m . _ _ s c h e d _ p r i o r i t y   =   x x x ; k e r n e l   p r i o r i t y   =   1 0 0   -   1   -   p a r a m . _ _ s c h e d _ p r i o r i t y 0
  ( 1 0 0   -   1   -   0   =   9 9 )     线 2 .             - 2 0   ~   1 9 线         线         线 9 9 9 9 0 ( 1 0 0   -   1   -   9 9   =   0 ) n i c e n i c e k e r n e l   p r i f o i t y   =   1 0 0   +   2 0   +   n i c e n i c e n i c e - 2 0 1 0 0 ( 1 0 0   +   2 0   +   ( - 2 0 )   =   1 0 0 ) n i c e 1 9 1 3 9 ( 1 0 0   + 2 0   + 1 9   =   1 3 9 )
      ;       ; 3 .     C P U   C P U _ S E T , C E P U _ Z E R O 1 .   # d e f i n e   _ G N U _ S O U R C E # i n c l u d e   < s c h e d . h > 2 .   # i n c l u d e   < s c h e d . h > # i n c l u d e   < p t h r e a d . h > / /   f i l e n a m e :   t e s t . c # d e f i n e   _ G N U _ S O U R C E # i n c l u d e   < u n i s t d . h >     # i n c l u d e   < s t d i o . h > # i n c l u d e   < s t d l i b . h > # i n c l u d e   < s c h e d . h > # i n c l u d e   < p t h r e a d . h > / /   线 v o i d   g e t _ t h r e a d _ i n f o ( c o n s t   i n t   t h r e a d _ i n d e x ) {         i n t   p o l i c y ;         s t r u c t   s c h e d _ p a r a m   p a r a m ;         p r i n t f ( " n = = = = >   t h r e a d _ i n d e x   =   % d   n " ,   t h r e a d _ i n d e x ) ;         p t h r e a d _ g e t s c h e d p a r a m ( p t h r e a d _ s e l f ( ) ,   & p o l i c y ,   & p a r a m ) ;         i f   ( S C H E D _ O T H E R   = =   p o l i c y )                 p r i n t f ( " t h r e a d _ i n d e x   % d :   S C H E D _ O T H E R   n " ,   t h r e a d _ i n d e x ) ;         e l s e   i f   ( S C H E D _ F I F O   = =   p o l i c y )                 p r i n t f ( " t h r e a d _ i n d e x   % d :   S C H E D _ F I F O   n " ,   t h r e a d _ i n d e x ) ;
        e l s e   i f   ( S C H E D _ R R   = =   p o l i c y )                 p r i n t f ( " t h r e a d _ i n d e x   % d :   S C H E D _ R R   n " ,   t h r e a d _ i n d e x ) ;         p r i n t f ( " t h r e a d _ i n d e x   % d :   p r i o r i t y   =   % d   n " ,   t h r e a d _ i n d e x ,   p a r a m . s c h e d _ p r i o r i t y ) ; } / /   线 v o i d   * t h r e a d _ r o u t i n e ( v o i d   * a r g s ) {         / /   线 线   1     4 使         i n t   t h r e a d _ i n d e x   =   * ( i n t   * ) a r g s ;                 / /   线 线 1         s l e e p ( 1 ) ;         / /   线         g e t _ t h r e a d _ i n f o ( t h r e a d _ i n d e x ) ;         l o n g   n u m   =   0 ;         f o r   ( i n t   i   =   0 ;   i   <   1 0 ;   i + + )         {                 f o r   ( i n t   j   =   0 ;   j   <   5 0 0 0 0 0 0 ;   j + + )                 {                         / /     C P U                           f l o a t   f 1   =   ( ( i + 1 )   *   3 4 5 . 4 5 )   *   1 2 . 3   *   4 5 . 6   /   7 8 . 9   /   ( ( j + 1 )   *   4 5 6 7 . 8 9 ) ;                         f l o a t   f 2   =   ( i + 1 )   *   1 2 . 3   *   4 5 . 6   /   7 8 . 9   *   ( j + 1 ) ;                         f l o a t   f 3   =   f 1   /   f 2 ;                 }                                 / /   线                 p r i n t f ( " t h r e a d _ i n d e x   % d :   n u m   =   % l d   n " ,   t h r e a d _ i n d e x ,   n u m + + ) ;         }                 / /   线         p r i n t f ( " t h r e a d _ i n d e x   % d :   e x i t   n " ,   t h r e a d _ i n d e x ) ;         r e t u r n   0 ; } v o i d   m a i n ( v o i d ) {         / /   线 0 1 - 线 2 3 - 线 ( )
        / /   线 0 1 - 线 2 3 - 线 ( )         i n t   t h r e a d _ n u m   =   4 ;                 / /   线 线         i n t   i n d e x [ 4 ]   =   { 1 ,   2 ,   3 ,   4 } ;         / /     4   线   i d           p t h r e a d _ t   p p i d [ 4 ] ;                 / /     2   线         p t h r e a d _ a t t r _ t   a t t r [ 2 ] ;         s t r u c t   s c h e d _ p a r a m   p a r a m [ 2 ] ;         / /   线   r o o t           i f   ( 0   ! =   g e t u i d ( ) )         {                 p r i n t f ( " P l e a s e   r u n   a s   r o o t   n " ) ;                 e x i t ( 0 ) ;         }         / /     4   线         f o r   ( i n t   i   =   0 ;   i   <   t h r e a d _ n u m ;   i + + )         {                 i f   ( i   < =   1 )         / /   2 线                 {                         / /   线                         p t h r e a d _ a t t r _ i n i t ( & a t t r [ i ] ) ;                                                 / /   S C H E D _ F I F O                         p t h r e a d _ a t t r _ s e t s c h e d p o l i c y ( & a t t r [ i ] ,   S C H E D _ F I F O ) ;                                                 / /     5 1 5 2                         p a r a m [ i ] . _ _ s c h e d _ p r i o r i t y   =   5 1   +   i ;                         p t h r e a d _ a t t r _ s e t s c h e d p a r a m ( & a t t r [ i ] ,   & p a r a m [ i ] ) ;                                                 / /   线   m a i n   线                         p t h r e a d _ a t t r _ s e t i n h e r i t s c h e d ( & a t t r [ i ] ,   P T H R E A D _ E X P L I C I T _ S C H E D ) ;                                                 / /   线                         p t h r e a d _ c r e a t e ( & p p i d [ i ] ,   & a t t r [ i ] , ( v o i d   * ) t h r e a d _ r o u t i n e ,   ( v o i d   * ) & i n d e x [ i ] ) ;                 }                 e l s e                 / /   线
    线 1 .   线   1 2 线 (   S C H E D _ F I F O 5 1 5 2 ) ; 2 .   线   3 4 线 (   S C H E D _ O T H E R ,   0 ) ;                     e l s e                 / /   线                 {                         p t h r e a d _ c r e a t e ( & p p i d [ i ] ,   0 ,   ( v o i d   * ) t h r e a d _ r o u t i n e ,   ( v o i d   * ) & i n d e x [ i ] ) ;                 }                         }         / /     4   线         f o r   ( i n t   i   =   0 ;   i   <   4 ;   i + + )                 p t h r e a d _ j o i n ( p p i d [ i ] ,   0 ) ;         f o r   ( i n t   i   =   0 ;   i   <   2 ;   i + + )                 p t h r e a d _ a t t r _ d e s t r o y ( & a t t r [ i ] ) ; } g c c   - o   t e s t   t e s t . c   - l p t h r e a d 4 U b u n t u 1 6 . 0 4 W i n d o w s 1 0
1 .     1     2   线 ; 2 .   1   线   5 1   2   线   5 2   2   线   1   线 ; 3 .   3     4   线   1     2   线   3     4   线 怀   4   线 = = = = >   t h r e a d _ i n d e x   =   4   t h r e a d _ i n d e x   4 :   S C H E D _ O T H E R   t h r e a d _ i n d e x   4 :   p r i o r i t y   =   0   = = = = >   t h r e a d _ i n d e x   =   1   t h r e a d _ i n d e x   1 :   S C H E D _ F I F O   t h r e a d _ i n d e x   1 :   p r i o r i t y   =   5 1   = = = = >   t h r e a d _ i n d e x   =   2   t h r e a d _ i n d e x   2 :   S C H E D _ F I F O   t h r e a d _ i n d e x   2 :   p r i o r i t y   =   5 2   t h r e a d _ i n d e x   2 :   n u m   =   0   t h r e a d _ i n d e x   4 :   n u m   =   0   = = = = >   t h r e a d _ i n d e x   =   3   t h r e a d _ i n d e x   3 :   S C H E D _ O T H E R   t h r e a d _ i n d e x   3 :   p r i o r i t y   =   0   t h r e a d _ i n d e x   1 :   n u m   =   0   t h r e a d _ i n d e x   2 :   n u m   =   1   t h r e a d _ i n d e x   4 :   n u m   =   1   t h r e a d _ i n d e x   3 :   n u m   =   0   t h r e a d _ i n d e x   1 :   n u m   =   1   t h r e a d _ i n d e x   2 :   n u m   =   2   t h r e a d _ i n d e x   4 :   n u m   =   2   t h r e a d _ i n d e x   3 :   n u m   =   1
      线 线                       s c h e d _ r t _ r u n t i m e _ u s :     9 5 0 0 0 0   s c h e d _ r t _ p e r i o d _ u s :     1 0 0 0 0 0 0     ( 1 )     ( 0 . 9 5 )                 1 2 L i n u x L i n u x C P U / p r o c / s y s / k e r n e l 2 C P U 1 0 0 0 0 0 0 9 5 0 0 0 0 0 . 0 5 S C H E D _ F I F O b u g C P U k i l l
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则