Planen von Threads unter Windows. Teil 1 von 4

Im Folgenden finden Sie keine einfache Abschrift des Berichts aus dem CLRium-Workshop , sondern eine überarbeitete Version für das Buch .NET Platform Architecture . Der Teil davon, der sich auf Flüsse bezieht.



Threads und Threadplanung


Was ist ein Stream? Lassen Sie uns eine kurze Definition geben. Im Kern ist ein Stream:


  • ;
  • .

, .NET — - . .NET - Windows. .NET Windows ( Windows thread id , ). , -.NET .NET, : , , . volatile, Interlocked SpinWait. lock . .


. — . ? , — , . . .


— . : . - .. .



" ?", — , — " "Intel Xeon 8 16 ". - — — . 8 . Hyper-Threading, ( ). , . , , , , . +=2 Hyper-Threading. .. .


— : - ( , Hyper-Threading), - , , , , .. , .


: , - . , .


, ? , — . . , : , . — , . : . . , , , : , , . — Console.ReadKey().


Windows 10, , 1,5 . , 20 , , , 4, , 20 1 7,5 … , . - . , … , - .


, — - .



CreateThread. . CreateThread new Thread(), .NET .


:


1) :


  • (SECURITY_ATTRIBUTES) + .
    .NET , ;

2) :


  • , ( )
    .. .NET, . .

3) —
4) .


, .NET — . , , .. . . , .


: .NET , , ManageThreadId Thread.


: CREATE_SUSPENDED — . .NET .


CreateRemoteThread, . ( Snoop). . .NET , . — .NET runtime. , : WinAPI , . , .NET , ( ). — runtime. : , ( -.NET runtime, C/C++ , ). .NET - .


: .NET - (, )



, , . , . . : , . : , , . Windows. — , .


, . Windows : . , , . — , , (UMS ). , .. , . ? . , , , . , . , , , .




Windows 32 (0-31)


  • 1 (00 — 00) — Zero Page Thread;
  • 15 (01 — 15) — ;
  • 16 (16 — 31) — .

Zero Page Thread. — , , , , , .. . : , - . , , - . runtime ( — .NET CLR) . , : - , , : . - , : . . , ?


, , , - - , . , Real Time . . .. - ( — , , , , ) 15, : 16, — . "" .


Windows API.


— . , : - ( ) : . , , , . , , — . . , , , . , - , . .. .


, : , : - — . , . ?


6 . — , . " ", - .


1. Real Time424
2. High313
3. Above Normal610
4. Normal28
5. Below Normal56
6. Idle14

— , . , . — , Normal:


  • Normal Normal, Normal 8 ( №4 );
  • Above Normal, 10. , : Normal 10.

? , .
, ,
, : ( ). , . .


, , . , , - Below Normal. , 6 . . ?


1. Time Critical(+15)
2. Higest(+2)
3. Above normal(+1)
4. Normal(+0)
5. Below normal(-1)
6. Lowest(-2)
7. Idle(-15)

3


Normal +0 . Below normal — (-1) . .. Below Normal 'Below Normal' 8 - 1 = 7 ( Normal), 6 - 1 = 5. Lowest (-2) 4.


Idle Time Critical — (-15 +15). Normal — 0 : -2, -1, +1 +2? . , (5,4,3,2,1) , : 5 — , 4 — , 3 — , 2 — , 1 — , 4. 10- ( — 100-), : 9 7? , 3 4?


. Normal. , Normal
Normal (Normal above), Normal (Normal below).
(Higest Lowest). , , . , , , : . Time Critical. : , . Idle. — .


?



Normal ( 3) Normal — 8. Above Normal Normal 9. Higest, Normal 10.


Windows , :


  • Normal Above-Normal
  • Higest Normal
    10.

: Normal, — Higest,
Higest Normal, .


, Real-Time , Real-Time — . .., , , . : , , real-time. , , Windows .


, ,
Real-Time , , .


/Real-TimeHighAbove-NormalNormalBelow-NormalIdle
Time Critical (+)311515151515
Highest (+2)2615121086
Above Normal (+1)251411975
Normal (0)241310864
Below Normal (-1)23129753
Lowest (-2)22118642
Idle (-)1611111

, , . , Above-Normal Normal Below-Normal ( ):



, , . , (. 3).


, , – Normal.


/Real-TimeHighAbove-NormalNormalBelow-NormalIdle
Time Critical (+)311515151515
Highest (+2)2615121086
Above Normal (+1)251411975
Normal (0)241310864
Below Normal (-1)23129753
Lowest (-2)22118642
Idle (-)1611111

, CLRium #7, . .

: , .

All Articles