Операционные системы реального времени

advertisement
T
ÌÎÑÊÎÂÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ
èìåíè Ì.Â. ËÎÌÎÍÎÑÎÂÀ
AF
Ìåõàíèêî-ìàòåìàòè÷åñêèé ôàêóëüòåò
Êàôåäðà âû÷èñëèòåëüíîé ìàòåìàòèêè
Ê.Þ. Áîãà÷åâ
Îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
DR
(ïðåäâàðèòåëüíûå ìàòåðèàëû ëåêöèé)
Ìîñêâà 2000 ãîä
Ñîäåðæàíèå
Ñîäåðæàíèå
1.1.
1.2.
1.3.
1.4.
Îïðåäåëåíèå îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) . . . . . . . . .
Òèïè÷íûå âðåìåíà ðåàêöèè íà âíåøíèå ñîáûòèÿ â óïðàâëÿåìûõ ÎÑРïðîöåññàõ
Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ . . . . . . . . . . . . . . . . . . . . . . . .
Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑÐÂ . . . . . . . . . . . . .
2. Îñíîâíûå ïîëîæåíèÿ
Îñíîâíûå îïðåäåëåíèÿ . . . . . .
Òèïû çàäà÷ . . . . . . . . . . . . .
Âèäû ïðîãðàììèðîâàíèÿ . . . . .
Âèäû ðåñóðñîâ . . . . . . . . . . .
Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ
Ñîñòîÿíèÿ ïðîöåññà . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
AF
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
T
1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
3.1. Íîðìû ESSE êîíñîðöèóìà VITA . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Ñòàíäàðò POSIX 1003.1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Ñòàíäàðò SCEPTRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
DR
4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè . . . . . .
4.1.1. Îáúåêòû . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2. Êëàññû è ïðåäñòàâèòåëè . . . . . . . . . . . . . . . . . . . . .
4.1.3. Ïîëèìîðôèçì . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.4. Íàñëåäîâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ
4.3. Ìîíîëèòíàÿ àðõèòåêòóðà . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Ìîäóëüíàÿ àðõèòåêòóðà (íà îñíîâå ìèêðîÿäðà) . . . . . . . . . . . .
4.5. Îáúåêòíàÿ àðõèòåêòóðà íà îñíîâå îáúåêòîâ-ìèêðîÿäåð . . . . . . .
4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè . . . . . . . . . . . . . . . . . .
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
Ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . . .
Ñîáûòèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . . . . . . .
Âçàèìîäåéñòâèå êëèåíò ñåðâåð . . . . . . . . . . . . .
Î÷åðåäè çàäà÷ . . . . . . . . . . . . . . . . . . . . . . . .
Îáúåêòû ñèíõðîíèçàöèè POSIX . . . . . . . . . . . . . .
5.6.1. Îáúåêòû ñèíõðîíèçàöèè òèïà mutex . . . . . . .
5.6.2. Îáúåêòû ñèíõðîíèçàöèè òèïà condvar . . . . . .
5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX
6. Óïðàâëåíèå çàäà÷àìè
6.1. Ïëàíèðîâàíèå çàäà÷ . . . . . . . . . . . . . . . .
6.1.1. Ïðèîðèòåòû . . . . . . . . . . . . . . . .
6.1.2. Ñòðàòåãèè ïëàíèðîâàíèÿ çàäà÷ . . . . .
6.1.3. Ïëàíèðîâàíèå ïåðèîäè÷åñêèõ çàäà÷ . .
6.1.4. Ðàçðàáîòêà õîðîøî ïëàíèðóåìûõ çàäà÷
6.2. Ïåðåêëþ÷åíèå êîíòåêñòà . . . . . . . . . . . . .
6.3. Ïðåðûâàíèÿ . . . . . . . . . . . . . . . . . . . .
7. Óïðàâëåíèå ïàìÿòüþ
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
ÎÑÐÂ
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
7
8
10
10
13
13
13
15
16
17
17
17
18
22
22
22
23
23
24
25
25
26
26
27
28
28
30
31
31
32
32
32
33
33
38
38
38
39
40
40
41
42
42
Ñîäåðæàíèå
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
AF
T
8.1. Êëàññè÷åñêèå ñèñòåìû . . . . . . . . . . . .
8.1.1. CHORUS . . . . . . . . . . . . . . . . .
8.1.2. LynxOS . . . . . . . . . . . . . . . . . .
8.1.3. QNX . . . . . . . . . . . . . . . . . . . .
8.1.4. OS-9 . . . . . . . . . . . . . . . . . . . .
8.1.5. pSOS . . . . . . . . . . . . . . . . . . .
8.1.6. RTC . . . . . . . . . . . . . . . . . . . .
8.1.7. VRTX . . . . . . . . . . . . . . . . . . .
8.1.8. VxWorks . . . . . . . . . . . . . . . . .
8.2. Îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû . . . . .
8.2.1. SoftKernel . . . . . . . . . . . . . . . . .
8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑР. . . .
8.4. Ñèñòåìû íà îñíîâå Linux . . . . . . . . . . . .
8.4.1. RT-Linux . . . . . . . . . . . . . . . . .
8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft)
8.5.1. Hyperkernel . . . . . . . . . . . . . . . .
8.5.2. LP RT-Technology . . . . . . . . . . . .
8.5.3. Realtime ETS Kernel . . . . . . . . . .
8.5.4. Component Integrator . . . . . . . . . .
8.5.5. Willows RT . . . . . . . . . . . . . . . .
42
43
43
44
45
45
46
47
47
48
48
49
49
50
51
51
53
53
53
54
54
9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
54
10.Ñðåäû ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
56
11.Àðõèòåêòóðû ïðîöåññîðîâ
56
DR
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè . .
11.1.1. CISC è RISC ïðîöåññîðû . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.2. Îñíîâíûå ÷åðòû RISC àðõèòåêòóðû . . . . . . . . . . . . . . . . . . . . .
11.1.3. Êîíâåéåðèçàöèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.4. Êýø ïàìÿòü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.5. Ìíîãîïðîöåññîðíûå àðõèòåêòóðû . . . . . . . . . . . . . . . . . . . . . . .
11.1.6. Ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè . . . . . . . . . . .
11.1.7. Âëèÿíèå òðåáîâàíèé ðåàëüíîãî âðåìåíè íà âûáîð àðõèòåêòóðû ïðîöåññîðà
11.2. Îðãàíèçàöèÿ äàííûõ âî âíåøíåé ïàìÿòè . . . . . . . . . . . . . . . . . . . . . .
11.2.1. Îðãàíèçàöèÿ öåëî÷èñëåííûõ äàííûõ . . . . . . . . . . . . . . . . . . . . .
11.2.2. Îðãàíèçàöèÿ äàííûõ ñ ïëàâàþùåé òî÷êîé . . . . . . . . . . . . . . . . . .
11.2.3. Ïóòè ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè . . . . . . . .
11.3. Ïðîöåññîðû Motorola 68xxx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4. Ïðîöåññîðû Intel 80x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.5. Ïðîöåññîðû PowerPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.5.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.5.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . .
11.5.3. Ïðîãðàììíàÿ ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.6. Ïðîöåññîðû SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.6.1. Îáùèé îáçîð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.6.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà . . . . . . . . . . . . . . . . . . . . . . . . . .
56
57
57
58
61
63
64
65
66
66
66
67
67
67
68
70
71
71
72
73
75
75
76
78
79
79
80
3
Ñîäåðæàíèå
12.Àðõèòåêòóðà ñèñòåìíîé øèíû
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
T
11.6.3. Ïðîãðàììíàÿ ìîäåëü . . . .
11.7. Ïðîöåññîðû Intel 80960x . . . . . .
11.7.1. Îáùèé îáçîð . . . . . . . . .
11.7.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
11.7.3. Ïðîãðàììíàÿ ìîäåëü . . . .
11.8. Ïðîöåññîðû ARM . . . . . . . . . .
11.8.1. Îáùèé îáçîð . . . . . . . . .
11.8.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
11.8.3. Ïðîãðàììíàÿ ìîäåëü . . . .
AF
12.1. Àðõèòåêòóðà øèíû VME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2. Àðõèòåêòóðà øèíû PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
82
82
83
84
85
85
87
88
90
91
92
93
Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé)
95
DR
Ïðåäìåòíûé óêàçàòåëü (ðóññêèé)
4
1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
Ïðåäèñëîâèå
AF
T
Íàñòîÿùåå ïîñîáèå ïðåäñòàâëÿåò ñîáîé ââåäåíèå â îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè (ÎÑÐÂ). Îïèñûâàþòñÿ èõ íàçíà÷åíèå, ñôåðû ïðèìåíåíèÿ, ãëàâíûå îñîáåííîñòè è ïðèíöèïû âíóòðåííåãî óñòðîéñòâà. Ðàññìàòðèâàþòñÿ îñíîâíûå âîçíèêàþùèå çàäà÷è è ìåòîäû èõ
ðàçðåøåíèÿ. Ïðèâîäÿòñÿ íåñêîëüêî ñòàíäàðòîâ íà ÎÑÐÂ, à òàêæå îïèñûâàþòñÿ áîëåå äåñÿòè êîíêðåòíûõ ÎÑÐÂ ðàçíûõ ïðîèçâîäèòåëåé. Â ïîñîáèè äàí òàêæå îáçîð îñíîâíûõ àïïàðàòíûõ êîìïîíåíò è èõ âëèÿíèå íà ÎÑÐÂ. Ðàññìàòðèâàþòñÿ ïðîöåññîðû ñåìåéñòâ Motorola
68xxx, Intel 80x86, PowerPC, SPARC, Intel 80960, ARM, íà êîòîðûõ ïîñòðîåíî ïîäàâëÿþùåå
áîëüøèíñòâî ïðîìûøëåííûõ êîìïüþòåðîâ, êîíòðîëëåðîâ è âñòðàèâàåìûõ ñèñòåì, à òàêæå
àðõèòåêòóðû øèí VME è PCI, èãðàþùèõ äîìèíèðóþùóþ ðîëü â ïîäîáíûõ ñèñòåìàõ.
1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ
ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
 ýòîì ðàçäåëå ìû ââåäåì ïîíÿòèå îïåðàöèîííîé ñèñòåìû ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
è ðàññìîòðèì îñíîâíûå îòëè÷èÿ ÎÑРîò äðóãèõ îïåðàöèîííûõ ñèñòåì.
1.1. Îïðåäåëåíèå îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
Ñóùåñòâóåò íåñêîëüêî îïðåäåëåíèé ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ) (real time operating
systems (RTOS)), áîëüøèíñòâî èç êîòîðûõ ïðîòèâîðå÷èò äðóã äðóãó. Ìû ïðèâåäåì íåñêîëüêî
èç íèõ, ÷òîáû ïðîäåìîíñòðèðîâàòü ðàçëè÷íûå âçãëÿäû íà íàçíà÷åíèå è îñíîâíûå çàäà÷è
ÎÑÐÂ.
1. Ñèñòåìîé ðåàëüíîãî âðåìåíè íàçûâàåòñÿ ñèñòåìà, â êîòîðîé óñïåøíîñòü ðàáîòû ëþáîé ïðîãðàììû çàâèñèò íå òîëüêî îò åå ëîãè÷åñêîé ïðàâèëüíîñòè, íî îò âðåìåíè, çà
êîòîðîå îíà ïîëó÷èëà ðåçóëüòàò. Åñëè âðåìåííûå
îãðàíè÷åíèÿ íå óäîâëåòâîðåíû, òî
ôèêñèðóåòñÿ ñáîé â ðàáîòå ñèñòåìû.
DR
Òàêèì îáðàçîì, âðåìåííûå
îãðàíè÷åíèÿ äîëæíû áûòü ãàðàíòèðîâàííî óäîâëåòâîðåíû.
Ýòî òðåáóåò îò ñèñòåìû áûòü ïðåäñêàçóåìîé, ò.å. âíå çàâèñèìîñòè îò ñâîåãî òåêóùåãî
ñîñòîÿíèÿ è çàãðóæåííîñòè âûäàâàòü íóæíûé ðåçóëüòàò çà òðåáóåìîå âðåìÿ. Ïðè ýòîì
æåëàòåëüíî, ÷òîáû ñèñòåìà îáåñïå÷èâàëà êàê ìîæíî áîëüøèé ïðîöåíò èñïîëüçîâàíèÿ
èìåþùèõñÿ ðåñóðñîâ.
Õîðîøèì ïðèìåðîì çàäà÷è, ãäå òðåáóåòñÿ ÎÑÐÂ, ÿâëÿåòñÿ óïðàâëåíèå ðîáîòîì, áåðóùèì äåòàëü ñ ëåíòû êîíâåéåðà. Äåòàëü äâèæåòñÿ, è ðîáîò èìååò ëèøü ìàëåíüêîå
âðåìåííîå îêíî, êîãäà îí ìîæåò åå âçÿòü. Åñëè îí îïîçäàåò, òî äåòàëü óæå íå áóäåò íà
íóæíîì ó÷àñòêå êîíâåéåðà, è, ñëåäîâàòåëüíî, ðàáîòà íå áóäåò ñäåëàíà, íåñìîòðÿ íà òî,
÷òî ðîáîò íàõîäèòñÿ â ïðàâèëüíîì ìåñòå. Åñëè îí ïîçèöèîíèðóåòñÿ ðàíüøå, òî äåòàëü
åùå íå óñïååò ïîäúåõàòü, è îí çàáëîêèðóåò åé ïóòü.
Äðóãèì ïðèìåðîì ìîæåò áûòü ñàìîëåò, íàõîäÿùèéñÿ íà àâòîïèëîòå. Ñåíñîðíûå ñåðâîäàò÷èêè äîëæíû ïîñòîÿííî ïåðåäàâàòü â óïðàâëÿþùèé êîìïüþòåð ðåçóëüòàòû èçìåðåíèé. Åñëè ðåçóëüòàò êàêîãî-ëèáî èçìåðåíèÿ áóäåò ïðîïóùåí, òî ýòî ìîæåò ïðèâåñòè ê
íåäîïóñòèìîìó íåñîîòâåòñòâèþ ìåæäó ðåàëüíûì ñîñòîÿíèåì ñèñòåì ñàìîëåòà è èíôîðìàöèåé î íåì â óïðàâëÿþùåé ïðîãðàììå.
Èíîãäà ðàçëè÷àþò ñèëüíîå (hard) è ñëàáîå (soft) òðåáîâàíèå ðåàëüíîãî âðåìåíè.
Åñëè çàïàçäûâàíèå ïðîãðàììû ïðèâîäèò ê ïîëíîìó íàðóøåíèþ ðàáîòû óïðàâëÿåìîé
ñèñòåìû, òî ãîâîðÿò î ñèëüíîì ðåàëüíîì âðåìåíè. Åñëè æå ýòî âåäåò òîëüêî ê ïîòåðå
ïðîèçâîäèòåëüíîñòè, òî ãîâîðÿò î ñëàáîì ðåàëüíîì âðåìåíè. Áîëüøèíñòâî ïðîãðàììíîãî îáåñïå÷åíèÿ îðèåíòèðîâàíî íà ñëàáîå ðåàëüíîå âðåìÿ, à çàäà÷à õîðîøåé ÎÑРîáåñïå÷èòü óðîâåíü áåçîïàñíîãî ôóíêöèîíèðîâàíèÿ ñèñòåìû, äàæå åñëè óïðàâëÿþùàÿ
ïðîãðàììà íèêîãäà íå çàêîí÷èò ñâîåé ðàáîòû.
5
1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
T
2. Ñòàíäàðò POSIX 1003:1 îïðåäåëÿåò ÎÑÐÂ ñëåäóþùèì îáðàçîì: Ðåàëüíîå âðåìÿ â
îïåðàöèîííûõ ñèñòåìàõ ýòî ñïîñîáíîñòü îïåðàöèîííîé ñèñòåìû îáåñïå÷èòü òðåáóåìûé
óðîâåíü ñåðâèñà â çàäàííûé ïðîìåæóòîê âðåìåíè.
3. Èíîãäà ñèñòåìàìè ðåàëüíîãî âðåìåíè íàçûâàþò ñèñòåìû ïîñòîÿííîé ãîòîâíîñòè (online ñèñòåìû), èëè èíòåðàêòèâíûå ñèñòåìû ñ äîñòàòî÷íûì âðåìåíåì ðåàêöèè. Îáû÷íî
ýòî äåëàþò ïî ìàðêåòèíãîâûì ñîîáðàæåíèÿì. Äåéñòâèòåëüíî, åñëè èíòåðàêòèâíóþ ïðîãðàììó íàçûâàþò ðàáîòàþùåé â ðåàëüíîì âðåìåíè, òî ýòî ïðîñòî îçíà÷àåò ÷òî îíà
óñïåâàåò îáðàáàòûâàòü çàïðîñû îò ÷åëîâåêà, äëÿ êîòîðîãî çàäåðæêà â ñîòíè ìèëëèñåêóíä äàæå íåçàìåòíà.
AF
4. Èíîãäà ïîíÿòèå ñèñòåìà ðåàëüíîãî âðåìåíè îòîæäåñòâëÿþò ñ áûñòðàÿ ñèñòåìà. Ýòî
íå âñåãäà ïðàâèëüíî. Âðåìÿ çàäåðæêè ðåàêöèè ÎÑÐÂ íà ñîáûòèå íå òàê óæ âàæíî
(îíî ìîæåò äîñòèãàòü íåñêîëüêèõ ñåêóíä). Ãëàâíîå, ÷òîáû ýòî âðåìÿ áûëî äîñòàòî÷íî
äëÿ ðàññìàòðèâàåìîãî ïðèëîæåíèÿ è ãàðàíòèðîâàííî. Î÷åíü ÷àñòî àëãîðèòì ñ ãàðàíòèðîâàííûì âðåìåíåì ðàáîòû ìåíåå ýôôåêòèâåí, ÷åì àëãîðèòì, òàêèì ñâîéñòâîì íå
îáëàäàþùèé. Íàïðèìåð, àëãîðèòì áûñòðîé ñîðòèðîâêè (quicksort) â ñðåäíåì ðàáîòàåò çíà÷èòåëüíî áûñòðåå ìíîãèõ äðóãèõ àëãîðèòìîâ ñîðòèðîâêè, íî åãî ãàðàíòèðîâàííàÿ
îöåíêà ñëîæíîñòè çíà÷èòåëüíî õóæå.
5. Âî ìíîãèõ âàæíûõ ñôåðàõ ïðèëîæåíèÿ ÎÑÐÂ ââîäÿò ñâîè ïîíÿòèÿ ðåàëüíîãî âðåìåíè. Íàïðèìåð, ïðîöåññ öèôðîâîé îáðàáîòêè ñèãíàëà (digital signal processing, DSP)
íàçûâàþò èäóùèì â ðåàëüíîì âðåìåíè, åñëè àíàëèç (ïðè ââîäå) è/èëè ãåíåðàöèÿ (ïðè
âûâîäå) äàííûõ ìîæåò áûòü ïðîâåäåí çà òî æå âðåìÿ, ÷òî è àíàëèç è/èëè ãåíåðàöèÿ
òåõ æå äàííûõ áåç öèôðîâîé îáðàáîòêè ñèãíàëà.
Íàïðèìåð, åñëè ïðè îáðàáîòêå àóäèî äàííûõ òðåáóåòñÿ 2:01 ñåêóíä äëÿ àíàëèçà 2:00
ñåêóíä çâóêà, òî ýòî íå ïðîöåññ ðåàëüíîãî âðåìåíè. Åñëè æå òðåáóåòñÿ 1:99 ñåêóíä, òî
ýòî ïðîöåññ ðåàëüíîãî âðåìåíè.
1.2. Òèïè÷íûå âðåìåíà ðåàêöèè íà âíåøíèå ñîáûòèÿ â óïðàâëÿåìûõ ÎÑРïðîöåññàõ
DR
Ñîãëàñíî îïðåäåëåíèþ, ÎÑРäîëæíà îáåñïå÷èòü òðåáóåìûé óðîâåíü ñåðâèñà â çàäàííûé ïðîìåæóòîê âðåìåíè Ýòîò ïðîìåæóòîê âðåìåíè îáû÷íî çàäàåòñÿ ïåðèîäè÷íîñòüþ è
ñêîðîñòüþ ïðîöåññîâ, êîòîðûìè óïðàâëÿåò ñèñòåìà. Ïðèáëèçèòåëüíîå âðåìÿ ðåàêöèè â çàâèñèìîñòè îò îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ ìîæåò áûòü ñëåäóþùèì:
ìàòåìàòè÷åñêîå ìîäåëèðîâàíèå íåñêîëüêî ìèêðîñåêóíä
ðàäèîëîêàöèÿ
íåñêîëüêî ìèëëèñåêóíä
ñêëàäñêîé ó÷åò
íåñêîëüêî ñåêóíä
òîðãîâûå îïåðàöèè
íåñêîëüêî ìèíóò
óïðàâëåíèå ïðîèçâîäñòâîì
íåñêîëüêî ìèíóò
õèìè÷åñêèå ðåàêöèè
íåñêîëüêî ÷àñîâ
Âèäíî, ÷òî âðåìåíà î÷åíü ðàçíÿòñÿ è íàêëàäûâàþò ðàçëè÷íûå òðåáîâàíèÿ íà âû÷èñëèòåëüíóþ óñòàíîâêó, íà êîòîðîé ðàáîòàåò ÎÑÐÂ.
1. Â çàâèñèìîñòè îò ñëîæíîñòè ïðîãðàììû óïðàâëåíèÿ ðåàëüíîå âðåìÿ íàêëàäûâàåò
ðàçëè÷íûå óñëîâèÿ íà âû÷èñëèòåëüíóþ ìîùíîñòü ïðîöåññîðà äëÿ ÎÑÐÂ.
2. Âíåøíèå ñîáûòèÿ ñòàíîâÿòñÿ èçâåñòíû ñèñòåìå ïîñðåäñòâîì ïðåðûâàíèé (interrupt requests (IRQ)) (ò.å. çàïðîñîâ íà îáñëóæèâàíèå ñî ñòîðîíû âíåøíèõ óñòðîéñòâ). Ïîýòîìó
çà÷àñòóþ äëÿ ÎÑРáîëåå âàæíà íå ìîùíîñòü ïðîöåññîðà, à õàðàêòåðèñòèêè êîìïüþòåðà, ñâÿçàííûå ñ ïîäñèñòåìîé ïðåðûâàíèé. Æåëàòåëüíûìè ÿâëÿþòñÿ
íàëè÷èå êàê ìîæíî áîëüøåãî êîëè÷åñòâà óðîâíåé ïðåðûâàíèé (IRQ levels) (ò.å.
àïïàðàòíîãî èëè/è ïðîãðàììíîãî äåêîäèðîâàíèÿ èñòî÷íèêà çàïðîñà);
6
1.3. Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ
T
êàê ìîæíî ìåíüøåå âðåìÿ ðåàêöèè íà ïðåðûâíèå (ò.å. êàê ìîæíî ìåíüøåå âðåìÿ
ìåæäó ïîñòóïëåíèåì çàïðîñà íà îáñëóæèâàíèå è íà÷àëîì âûïîëíåíèÿ îáñëóæèâàþùåé ïðîãðàììû).
3. ÎÑР÷àñòî ñàìà ÿâëÿåòñÿ èíèöèàòîðîì ïåðèîäè÷åñêèõ ïðîöåññîâ, êîòîðûìè óïðàâëÿåò (íàïðèìåð, äâèæåíèåì ïðåññà èëè ëó÷à ðàäàðà). Ïîýòîìó ÿâëÿåòñÿ íåîáõîäèìûì
íàëè÷èå îäíîãî èëè íåñêîëüêèõ òàéìåðîâ (àïïàðàòíûõ óñòðîéñòâ, âûäàþùèõ ïðåðûâàíèå ÷åðåç çàäàííûå ïðîìåæóòêè âðåìåíè), êîòîðûå ìîãóò ðàáîòàòü â ïåðèîäè÷åñêîì
èëè æäóùåì ðåæèìå.
AF
1.3. Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ
 òå÷åíèå äëèòåëüíîãî âðåìåíè îñíîâíûìè ïîòðåáèòåëÿìè ÎÑРáûëè âîåííàÿ è êîñìè÷åñêàÿ îáëàñòè. Ñåé÷àñ ñèòóàöèÿ êàðäèíàëüíî èçìåíèëàñü è ÎÑРìîæíî âñòðåòèòü äàæå â
òîâàðàõ øèðîãî ïîòðåáëåíèÿ.
Îñíîâíûå îáëàñòè ïðèìåíåíèÿ ÎÑÐÂ:
Âîåííàÿ è êîñìè÷åñêàÿ îáëàñòè:
áîðòîâîå è âñòðàèâàåìîå îáîðóäîâàíèå:
ñèñòåìû èçìåðåíèÿ è óïðàâëåíèÿ, ðàäàðû;
öèôðîâûå âèäåîñèñòåìû, ñèìóëÿòîðû;
ðàêåòû, ñèñòåìû îïðåäåëåíèÿ ïîëîæåíèÿ è ïðèâÿçêè ê ìåñòíîñòè.
Ïðîìûøëåííîñòü:
àâòîìàòè÷åñêèå ñèñòåìû óïðàâëåíèÿ ïðîèçâîäñòâîì (ÀÑÓÏ) (computer-aided manufacturing (CAM)), àâòîìàòè÷åñêèå ñèñòåìû óïðàâëåíèÿ òåõíîëîãè÷åñêèì ïðîöåññîì (ÀÑÓÒÏ);
ñèìóëÿòîðû, ñèñòåìû óïðàâëåíèÿ ìîòîðîì, àâòîìàòè÷åñêîå
ñöåïëåíèå, ñèñòåìû àíòèáëîêèðîâêè êîëåñ. . .
DR
àâòîìîáèëåñòðîåíèå:
ýíåðãåòèêà:
ñáîð èíôîðìàöèè, óïðàâëåíèå äàííûìè è îáîðóäîâàíèåì. . .
òåëåêîììóíèêàöèè:
ôîííûå ñòàíöèè. . .
êîììóíèêàöèîííîå îáîðóäîâàíèå, ñåòåâûå êîììóòàòîðû, òåëå-
áàíêîâñêîå îáîðóäîâàíèå (íàïðèìåð, âî ìíîãèõ áàíêîìàòàõ ðàáîòàåò ÎÑÐÂ QNX).
Òîâàðû øèðîêîãî ïîòðåáëåíèÿ:
ìîáèëüíûå òåëåôîíû, íàïðèìåð, â òåëåôîíàõ ñòàíäàðòà GSM ðàáîòàåò ÎÑÐÂ
pSOS;
öèôðîâûå òåëåâèçèîííûå äåêîäåðû;
öèôðîâîå òåëåâèäåíèå (ìóëüòèìåäèà, âèäåîñåðâåðû. . . );
êîìïüþòåðíîå è îôèñíîå îáîðóäîâàíèå (ïðèíòåðû, êîïèðû), íàïðèìåð, â ôàêñàõ ïðèìåíÿåòñÿ ÎÑÐÂ VxWorks, â óñòðîéñòâàõ ÷òåíèÿ êîìïàêò-äèñêîâ ÎÑÐÂ
VRTX32.
Îòìåòèì, ÷òî ÷àñòî ÎÑРñóùåñòâóþò â íåñêîëüêèõ âàðèàíòàõ: ïîëíîì è ñîêðàùåííîì,
êîãäà îáúåì ñèñòåìû ñîñòàâëÿåò íåñêîëüêî êèëîáàéòîâ.
7
1. Îïðåäåëåíèå è îñíîâíûå îñîáåííîñòè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè (ÎÑÐÂ)
1.4. Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑÐÂ
T
Âû÷èñëèòåëüíûå óñòàíîâêè, íà êîòîðûõ ïðèìåíÿþòñÿ ÎÑÐÂ, ìîæíî óñëîâíî ðàçäåëèòü
íà òðè ãðóïïû.
AF
1. Îáû÷íûå êîìïüþòåðû. Ïî ëîãè÷åñêîìó óñòðîéñòâó ñîâïàäàþò ñ íàñòîëüíûìè ñèñòåìàìè. Àïïàðàòíîå óñòðîéñòâî íåñêîëüêî îòëè÷àåòñÿ. Äëÿ îáåñïå÷åíèÿ ìèíèìàëüíîãî
âðåìåíè ïðîñòîÿ â ñëó÷àå òåõíè÷åêîé íåïîëàäêè ïðîöåññîð, ïàìÿòü è ò.ä. ðàçìåùåíû íà ñúåìíîé ïëàòå, âñòàâëÿåìîé â ñïåöèàëüíûé ðàçúåì òàê íàçûâàåìîé ïàññèâíîé
îñíîâíîé ïëàòû. Â äðóãèå ðàçúåìû ýòîé ïëàòû âñòàâëÿþòñÿ ïëàòû ïåðèôåðèéíûõ êîíòðîëëåðîâ è äðóãîå îáîðóäîâàíèå. Ñàì êîìïüþòåð ïîìåùàåòñÿ â ñïåöèàëüíûé êîðïóñ,
îáåñïå÷èâàþùèé çàùèòó îò ïûëè è ìåõàíè÷åñêèõ ïîâðåæäåíèé.  êà÷åñòâå ìîíèòîðîâ ÷àñòî èñïîëüçóþòñÿ æèäêîêðèñòàëè÷åñêèå äèñïëåè, èíîãäà ñ ñåíñî÷óâñòâèòåëüíûì
ïîêðûòèåì.
Ïî ýêîíîìè÷åñêèì ïðè÷èíàì ñðåäè ïðîöåññîðîâ ýòèõ êîìïüþòåðîâ äîìèíèðóåò ñåìåéñòâî Intel 80x86.
Ïîäîáíûå âû÷èñëèòåëüíûå ñèñòåìû îáû÷íî íå èñïîëüçóþòñÿ äëÿ íåïîñðåäñòâåííîãî
óïðàâëåíèÿ ïðîìûøëåííûì èëè èíûì îáîðóäîâàíèåì. Îíè â îñíîâíîì ñëóæàò êàê òåðìèíàëû äëÿ âçàèìîäåéñòâèÿ ñ ïðîìûøëåííûìè êîìïüþòåðàìè è âñòðîåííûìè êîíòðîëëåðàìè, äëÿ âèçóàëèçàöèè ñîñòîÿíèÿ îáîðóäîâàíèÿ è òåõíîëîãè÷åñêîãî ïðîöåññà.
Íà òàêèõ êîìïüþòåðàõ â êà÷åñòâå îïåðàöèîííûõ ñèñòåì ÷àñòî èñïîëüçóþòñÿ îáû÷íûå
îïåðàöèîííûå ñèñòåìû ñ äîïîëíèòåëüíûìè ïðîãðàììíûìè êîìïëåêñàìè, àäàïòèðóþùèìè èõ ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè.
2.
Ïðîìûøëåííûå êîìïüþòåðû. Ñîòîÿò èç îäíîé ïëàòû, íà êîòîðîé ðàçìåùåíû: ïðîöåññîð, êîíòðîëëåð ïàìÿòè, ïàìÿòü 4-õ âèäîâ:
ÏÇÓ, ïîñòîÿííîå çàïîìèíàþùåå óñòðîéñòâî (ROM, read-only memory), ãäå îáû÷íî
ðàçìåùåíà ñàìà ÎÑÐÂ; òèïè÷íàÿ åìêîñòü 500Kb;
DR
ÎÇÓ, îïåðàòèâíîå çàïîìèíàþùåå óñòðîéñòâî (RAM, random access memory), êóäà çàãðóæàåòñÿ êîä è äàííûå ÎÑÐÂ; îáû÷íî îðãàíèçîâàíà íà áàçå äèíàìè÷åñêîé
ïàìÿòè (dynamic RAM, DRAM); òèïè÷íàÿ åìêîñòü 16Mb;
ñòàòè÷åñêîå ÎÇÓ (static RAM, SRAM) (òî æå, ÷òî è ÎÇÓ, íî ïèòàåòñÿ îò èìåþùåéñÿ
íà ïëàòå áàòàðåéêè), ãäå ðàçìåùàþòñÿ êðèòè÷åñêè âàæíûå äàííûå, êîòîðûå íå
äîëæíû ïðîïàäàòü ïðè âûêëþ÷åíèè ïèòàíèÿ; òèïè÷íàÿ åìêîñòü 2Mb; òèïè÷íîå
âðåìÿ ñîõðàíåíèÿ äàííûõ 5 ëåò;
ôëåø-ïàìÿòü (flash RAM) (ýëåêòðè÷åñêè ïðîãðàììèðóåìîå ÏÇÓ), êîòîðîå èãðàåò
ðîëü äèñêà äëÿ ÎÑÐÂ; òèïè÷íàÿ åìêîñòü 4Mb;
êîíòðîëëåðû ïåðèôåðèéíûõ óñòðîéñòâ: SCSI (Small Computer System Interface), Ethernet, COM ïîðòîâ, ïàðàëëåëüíîãî ïîðòà, íåñêîëüêî ïðîãðàììèðóåìûõ òàéìåðîâ. Íà
ïëàòå íàõîäèòñÿ òàêæå êîíòðîëëåð è ðàçúåì øèíû, ÷åðåç êîòîðóþ êîìïüþòåð óïðàâëÿåò âíåøíèìè óñòðîéñòâàìè.  êà÷åñòâå øèíû â ïîäàâëÿþùåì áîëüøèíñòâå ñëó÷àåâ
èñïîëüçóåòñÿ øèíà VME, êîòîðóþ â ïîñëåäíåå âðåìÿ ñòàëà òåñíèòü øèíà Compact PCI.
Îòìåòèì, ÷òî íåñìîòðÿ íà íàëè÷èå êîíòðîëëåðà SCSI, îáû÷íî ÎÑРðàáîòàåò áåç äèñêîâûõ íàêîïèòåëåé, ïîñêîëüêó ïîñëåäíèå íå óäîâëåòâîðÿþò ïðåäúÿâëÿåìûì ê ñèñòåìàì
ðåàëüíîãî âðåìåíè òðåáîâàíèÿì ïî íàäåæíîñòè, óñòîé÷èâîñòè ê âèáðàöèè, ãàáàðèòàì è
âðåìåíè ãîòîâíîñòè ïîñëå âêëþ÷åíèÿ ïèòàíèÿ.
Ïëàòà ïîìåùàåòñÿ â ñïåöèàëüíûé êîðïóñ (êðåéò), â êîòîðîì ðàçâåäåíû ðàçúåìû øèíû
è óñòàíîâëåí áëîê ïèòàíèÿ. Êîðïóñ îáåñïå÷èâàåò íàäëåæàùèé òåìïåðàòóðíûé ðåæèì,
çàùèòó îò ïûëè è ìåõàíè÷åñêèõ ïîâðåæäåíèé.  òîò æå êîðïóñ âñòàâëÿþòñÿ ïëàòû
àíàëîãî-öèôðîâûõ è/èëè öèôðî-àíàëîãîâûõ ïðåîáðàçîâàòåëåé (ÀÖÏ è/èëè ÖÀÏ)
8
1.4. Îñîáåííîñòè îáîðóäîâàíèÿ, íà êîòîðîì ðàáîòàþò ÎÑÐÂ
T
(analog to digital and/or digital to analog converters, ADC and/or DAC), ÷åðåç êîòîðûå îñóùåñòâëÿåòñÿ ââîä/âûâîä óïðàâëÿþùåé èíôîðìàöèè, ïëàòû óïðàâëåíèÿ ýëåêòðîìîòîðàìè è ò.ï.  òîò æå êîðïóñ ìîãóò âñòàâëÿòüñÿ äðóãèå òàêèå æå (èëè èíûå)
ïðîìûøëåííûå êîìïüþòåðû, îáðàçóÿ ìíîãîïðîöåññîðíóþ ñèñòåìó.
AF
Ñðåäè ïðîöåññîðîâ ïðîìûøëåííûõ êîìïüþòåðîâ äîìèíèðóþò ïðîöåññîðû ñåìåéñòâ
PowerPC (Motorola IBM) è Motorola 68xxx (Motorola). Òàêæå ïðèñóòñòâóþò ïðîöåññîðû ñåìåéñòâ SPARC (SUN), Intel 80x86 (Intel), ARM (ARM), Intel 80960x (Intel). Ïðè âûáîðå ïðîöåññîðà îïðåäåëÿþùèìè ôàêòîðàìè ÿâëÿþòñÿ ïîëó÷åíèå òðåáóåìîé ïðîèçâîäèòåëüíîñòè ïðè íàèìåíüøåé òàêòîâîé ÷àñòîòå, à, çíà÷èò, è íàèìåíüøåé
ðàññåèâàåìîé ìîùíîñòè, à òàêæå íàèìåíüøåå âðåìÿ ïåðåêëþ÷åíèÿ çàäà÷ è ðåàêöèè íà
ïðåðûâàíèÿ. Ïîä÷åðêíåì âàæíîñòü ìàëîé ðàññåèâàåìîé ìîùíîñòè ïðîöåññîðà ñ òî÷êè
çðåíèÿ ïîëó÷åíèÿ âûñîêîé îòêàçîóñòîé÷èâîñòè ñèñòåìû â öåëîì, ïîñêîëüêó ìàëûé íàãðåâ ïðîöåññîðà ïîçâîëÿåò îáîéòèñü áåç îõëàæäàþùåãî âåíòèëÿòîðà, êîòîðûé ÿâëÿåòñÿ
äîñòàòî÷íî íåíàäåæíûì ìåõàíè÷åñêèì óñòðîéñòâîì.
Ïðîìûøëåííûå êîìïüþòåðû èñïîëüçóþòñÿ äëÿ íåïîñðåäñòâåííîãî óïðàâëåíèÿ ïðîìûøëåííûì èëè èíûì îáîðóäîâàíèåì. Îíè ÷àñòî íå èìåþò ìîíèòîðà è êëàâèàòóðû, è
äëÿ âçàèìîäåéñòâèÿ ñ íèìè ñëóæàò îáû÷íûå êîìïüþòåðû, ñîåäèíåííûå ñ íèìè ÷åðåç
ïîñëåäîâàòåëüíûé ïîðò (COM ïîðò) èëè Ethernet.
3.
ñèñòåìû. Óñòàíàâëèâàþòñÿ âíóòðü îáîðóäîâàíèÿ, êîòîðûì îíè óïðàâëÿþò. Äëÿ êðóïíîãî îáîðóäîâàíèÿ (íàïðèìåð, ëîêîìîòèâ èëè ñàìîëåò) ìîãóò ïî èñïîëíåíèþ ñîâïàäàòü ñ ïðîìûøëåííûìè êîìïüþòåðàìè. Äëÿ îáîðóäîâàíèÿ ïîìåíüøå (íàïðèìåð, ïðèíòåð) ìîãóò ïðåäñòàâëÿòü ñîáîé ïðîöåññîð ñ ñîïóòñòâóþùèìè ýëåìåíòàìè,
ðàçìåùåííûé íà îäíîé ïëàòå ñ äðóãèìè ýëåêòðîííûìè êîìïîíåíòàìè ýòîãî îáîðóäîâàíèÿ. Äëÿ ìèíèàòþðíîãî îáîðóäîâàíèÿ (íàïðèìåð, ìîáèëüíûé òåëåôîí) ïðîöåññîð ñ
ñîïóòñòâóþùèìè ýëåìåíòàìè ìîæåò áûòü ÷àñòüþ îäíîé èç áîëüøèõ èíòåãðàëüíûõ ñõåì
ýòîãî îáîðóäîâàíèÿ.
Âñòðàèâàåìûå
 äàëüíåéøåì ïîä êîìïüþòåðîì äëÿ ÎÑРìû áóäåì ïîíèìàòü ïðîìûøëåííûé êîìïüþòåð. Îòìåòèì îñíîâíûå îñîáåííîñòè ÎÑÐÂ, äèêòóåìûå íåîáõîäèìîñòüþ åå ðàáîòû íà
ïðîìûøëåííîì êîìïüþòåðå.
Ñèñòåìà ÷àñòî äîëæíà ðàáîòàòü íà áåçäèñêîâîì êîìïüþòåðå è îñóùåñòâëÿòü íà÷àëüíóþ
çàãðóçêó èç ÏÇÓ. Â ñèëó ýòîãî:
DR
êðèòè÷åñêè âàæíûì ÿâëÿåòñÿ ðàçìåð ñèñòåìû;
äëÿ ýêîíîìèè ìåñòà â ÏÇÓ ÷àñòü ñèñòåìû ÷àñòî õðàíèòñÿ â ñæàòîì âèäå è çàãðóæàåòñÿ â ÎÇÓ ïî ìåðå íåîáõîäèìîñòè;
ñèñòåìà ÷àñòî ïîçâîëÿåò èñïîëíÿòü êîä êàê â ÎÇÓ, òàê è â ÏÇÓ;
ïðè íàëè÷èè ñâîáîäíîãî ìåñòà â ÎÇÓ ñèñòåìà ÷àñòî êîïèðóåò ñåáÿ èç ìåäëåííîãî
ÏÇÓ â áîëåå áûñòðîå ÎÇÓ;
ñàìà ñèñòåìà êîìïèëèðóåòñÿ, ëèíêóåòñÿ è ïðåâðàùàåòñÿ â çàãðóçî÷íûé ìîäóëü íà
äðóãîì, îáû÷íîì êîìïüþòåðå, ñâÿçàííîì ñ ïðîìûøëåííûì êîìïüþòåðîì ÷åðåç
ïîñëåäîâàòåëüíûé ïîðò èëè Ethernet; ýòî òðåáóåò ñïåöèàëüíîãî êðîññïëàòôîðìåííîãî èíñòðóìåíòàðèÿ ðàçðàáîò÷èêà, ïîñêîëüêó òèïû ïðîöåññîðîâ è/èëè îïåðàöèîííûõ ñèñòåì íà ýòèõ äâóõ êîìïüþòåðàõ íå ñîâïàäàþò.
Ñèñòåìà ïî-âîçìîæíîñòè äîëæíà ïîääåðæèâàòü êàê ìîæíî áîëåå øèðîêèé ðÿä ïðîöåññîðîâ, ÷òî äàåò âîçìîæíîñòü ïîòðåáèòåëþ âûáðàòü ïðîöåññîð ïîäõîäÿùåé ìîùíîñòè.
Ñèñòåìà ïî-âîçìîæíîñòè äîëæíà ïîääåðæèâàòü êàê ìîæíî áîëåå øèðîêèé ðÿä ñïåöèàëüíîãî îáîðóäîâàíèÿ (ïåðèôåðèéíûå êîíòðîëëåðû, òàéìåðû è ò.ä.), êîòîðûå ìîãóò
ñòîÿòü íà ïëàòå êîìïüþòåðà è ïëàòàõ, êîòîðûìè îí óïðàâëÿåò ÷åðåç îáùóþ øèíó.
9
2. Îñíîâíûå ïîëîæåíèÿ
T
Î÷åâèäíî, ÷òî äëÿ ïîëó÷åíèÿ çàêîí÷åííîé ñèñòåìû óïðàâëåíèÿ íå äîñòàòî÷íî ïðîìûøëåííîãî êîìïüþòåðà, ÀÖÏ è/èëè ÖÀÏ ïëàòû, êðåéòà è ÎÑÐÂ. Íóæíî åùå íàïèñàòü
ïðîãðàììó, êîòîðàÿ áóäåò íåïîñðåäñòâåííî óïðàâëÿòü êîíêðåòíûì ïðîìûøëåííûì îáîðóäîâàíèåì. Äëÿ ýòîãî íåîáõîäèì (êðîññïëàòôîðìåííûé) èíñòðóìåíòàðèé ðàçðàáîò÷èêà, öåíà êîòîðîãî ìîæåò ïðåâîñõîäèòü öåíó ïåðå÷èñëåííûõ âûøå êîìïîíåíò, âìåñòå
âçÿòûõ. Ïðàâäà, ýòîò èíñòðóìåíòàðèé íóæåí òîëüêî ðàçðàáîò÷èêó, è ïîëó÷åííàÿ ïðîãðàììà ìîæåò ðàáîòàòü íà ìíîãèõ êîìïüþòåðàõ.
Êðèòè÷åñêè âàæíûì ïàðàìåòðîì äëÿ ÎÑРÿâëÿåòñÿ âðåìÿ åå ðåàêöèè íà ïðåðûâàíèÿ
(êîòîðîå ñêëàäûâàåòñÿ èç àïïàðàòíîãî âðåìåíè çàäåðæêè è ïðîãðàììíûõ çàäåðæåê), à
òàêæå ïðåäñêàçóåìîñòü ýòîãî âðåìåíè.
AF
2. Îñíîâíûå ïîëîæåíèÿ
 ýòîì ðàçäåëå ìû ââåäåì îñíîâíûå ïîíÿòèÿ, èñïîëüçóåìûå ïðè ðàññìîòðåíèè îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè.
2.1. Îñíîâíûå îïðåäåëåíèÿ
Îïðåäåëåíèå. Ïðîãðàììà ýòî îïèñàíèå íà íåêîòîðîì ôîðìàëèçîâàííîì ÿçûêå àëãîðèòìà, ðåøàþùåãî ïîñòàâëåííóþ çàäà÷ó. Ïðîãðàììà ÿâëÿåòñÿ ñòàòè÷åñêîé åäèíèöåé, ò.å.
íåèçìåíÿåìîé ñ òî÷êè çðåíèÿ îïåðàöèîííîé ñèñòåìû, åå âûïîëíÿþùåé.
Îïðåäåëåíèå. Ïðîöåññîð ýòî óñòðîéñòâî, âûïîëíÿþùåå îïðåäåëåííûé íàáîð èíñòðóêöèé. Äëÿ òîãî, ÷òîáû áûòü âûïîëíåííîé, ïðîãðàììà äîëæíà áûòü ïðåæäå âñåãî ïåðåâåäåíà ñ àëãîðèòìè÷åñêîãî ÿçûêà íà ÿçûê ýòèõ èíñòðóêöèé (ñêîìïèëèðîâàíà).
Îïðåäåëåíèå. Ïðîöåññ ýòî äèíàìè÷åñêàÿ ñóùíîñòü ïðîãðàììû, åå êîä â ïðîöåññå
ñâîåãî âûïîëíåíèÿ. Èìååò
ñîáñòâåííûå îáëàñòè ïàìÿòè ïîä êîä è äàííûå,
ñîáñòâåííûé ñòåê,
(â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ) ñîáñòâåííîå îòîáðàæåíèå âèðòóàëüíîé ïàìÿòè íà
ôèçè÷åñêóþ,
DR
ñîáñòâåííîå ñîñòîÿíèå.
Ïðîöåññ ìîæåò íàõîäèòñÿ â îäíîì èç ñëåäóþùèõ òèïè÷íûõ ñîñòîÿíèé (òî÷íîå êîëè÷åñòâî
è ñâîéñòâà òîãî èëè èíîãî ñîñòîÿíèÿ çàâèñÿò îò îïåðàöèîííîé ñèñòåìû):
1. îñòàíîâëåí ïðîöåññ îñòàíîâëåí è íå èñïîëüçóåò ïðîöåññîð; íàïðèìåð, â òàêîì ñîñòîÿíèè ïðîöåññ íàõîäèòñÿ ñðàçó ïîñëå ñîçäàíèÿ;
2. òåðìèíèðîâàí ïðîöåññ òåðìèíèðîâàí è íå èñïîëüçóåò ïðîöåññîð; íàïðèìåð, ïðîöåññ
çàêîí÷èëñÿ, íî åùå íå óäàëåí îïåðàöèîííîé ñèñòåìîé;
3. æäåò ïðîöåññ æäåò íåêîòîðîãî ñîáûòèÿ (êîòîðûì ìîæåò áûòü àïïàðàòíîå èëè ïðîãðàììíîå ïðåðûâàíèå, ñèãíàë èëè äðóãàÿ ôîðìà ìåæïðîöåññíîãî âçàèìîäåéñòâèÿ);
4. ãîòîâ ïðîöåññ íå îñòàíîâëåí, íå òåðìèíèðîâàí, íå îæèäàåò, íå óäàëåí, íî è íå ðàáîòàåò; íàïðèìåð, ïðîöåññ ìîæåò íå ïîëó÷àòü äîñòóïà ê ïðîöåññîðó, åñëè â äàííûé ìîìåíò
âûïîëíÿåòñÿ äðóãîé, áîëåå ïðèîðèòåòíûé ïðîöåññ;
5. âûïîëíÿåòñÿ ïðîöåññ âûïîëíÿåòñÿ è èñïîëüçóåò ïðîöåññîð; â ÎÑРýòî îáû÷íî îçíà÷àåò, ÷òî ýòîò ïðîöåññ ÿâëÿåòñÿ ñàìûì ïðèîðèòåòíûì, ñðåäè âñåõ ïðîöåññîâ, íàõîäÿùèõñÿ â ñîñòîÿíèè ãîòîâ.
10
2.1. Îñíîâíûå îïðåäåëåíèÿ
T
Îïðåäåëåíèå. Ñòåê (stack) ýòî îáëàñòü ïàìÿòè, â êîòîðîé ðàçìåùàþòñÿ ëîêàëüíûå
ïåðåìåííûå, àðãóìåíòû è âîçâðàùàåìûå çíà÷åíèÿ ôóíêöèé. Âìåñòå ñ îáëàñòüþ ñòàòè÷åñêèõ
äàííûõ ïîëíîñòüþ çàäàåò òåêóùåå ñîñòîÿíèå ïðîöåññà.
Îïðåäåëåíèå. Âèðòóàëüíàÿ ïàìÿòü ýòî ïàìÿòü, â àäðåñíîì ïðîñòðàíñòâå êîòîðîé
ðàáîòàåò ïðîöåññ. Âèðòóàëüíàÿ ïàìÿòü:
1. ïîçâîëÿåò óâåëè÷èòü îáúåì ïàìÿòè, äîñòóïíîé ïðîöåññàì çà ñ÷åò äèñêîâîé ïàìÿòè;
2. îáåñïå÷èâàåò âûäåëåíèå êàæäîìó èç ïðîöåññîâ âèðòóàëüíî íåïðåðûâíîãî áëîêà ïàìÿòè,
íà÷èíàþùåãîñÿ (âèðòóàëüíî) ñ îäíîãî è òîãî æå àäðåñà;
3. îáåñïå÷èâàåò èçîëÿöèþ îäíîãî ïðîöåññà îò äðóãîãî.
AF
Òðàíñëÿöèåé âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé çàíèìàåòñÿ îïåðàöèîííàÿ ñèñòåìà. Äëÿ
óñêîðåíèÿ ýòîãî ïðîöåññà ìíîãèå êîìïüþòåðíûå ñèñòåìû èìåþò ïîääåðæêó ñî ñòîðîíû àïïàðàòóðû, êîòîðàÿ ìîæåò áûòü ëèáî ïðÿìî â ïðîöåññîðå, ëèáî â ñïåöèàëüíîì óñòðîéñòâå
óïðàâëåíèÿ ïàìÿòüþ. Ñðåäè ìåõàíèçìîâ òðàíñëÿöèè âèðòóàëüíîãî àäðåñà ïðåîáëàäàåò ñòðàíè÷íûé, ïðè êîòîðîì âèðòóàëüíàÿ è ôèçè÷åñêàÿ ïàìÿòü ðàçáèâàþòñÿ íà êóñêè ðàâíîãî ðàçìåðà, íàçûâàåìûå ñòðàíèöàìè (òèïè÷íûé ðàçìåð 4Kb), ìåæäó ñòðàíèöàìè âèðòóàëüíîé
è ôèçè÷åñêîé ïàìÿòè óñòàíàâëèâàåòñÿ âçàèìíî-îäíîçíà÷íîå (äëÿ êàæäîãî ïðîöåññà) îòîáðàæåíèå. Îòìåòèì, ÷òî ÎÑРñòðåìÿòñÿ ïîëó÷èòü ìàêñèìàëüíóþ ïðîèçâîäèòåëüíîñòü íà
èìåþùåìñÿ îáîðóäîâàíèè, ïîýòîìó íåêîòîðûå ÎÑÐÂ íå èñïîëüçóþò ìåõàíèçì âèðòóàëüíîé
ïàìÿòè èç-çà çàäåðæåê, âíîñèìûõ ïðè òðàíñëÿöèè àäðåñà.
Îïðåäåëåíèå. Ìåæïðîöåññíîå âçàèìîäåéñòâèå ýòî òîò èëè èíîé ñïîñîá ïåðåäà÷è
èíôîðìàöèè èç îäíîãî ïðîöåññà â äðóãîé. Íàèáîëåå ðàñïðîñòðàíåííûìè ôîðìàìè âçàèìîäåéñòâèÿ ÿâëÿþòñÿ (íå âñå ñèñòåìû ïîääåðæèâàþò ïåðå÷èñëåííûå íèæå âîçìîæíîñòè):
Ðàçäåëÿåìàÿ ïàìÿòü
äâà (èëè áîëåå) ïðîöåññà èìåþò äîñòóï ê îäíîìó è òîìó æå
áëîêó ïàìÿòè. Â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ îðãàíèçàöèÿ òàêîãî âèäà âçàèìîäåéñòâèÿ òðåáóåò ïîääåðæêè ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû, ïîñêîëüêó íåîáõîäèìî
îòîáðàçèòü ñîîòâåòñòâóþùèå áëîêè âèðòóàëüíîé ïàìÿòè ïðîöåññîâ íà îäèí è òîò æå
áëîê ôèçè÷åñêîé ïàìÿòè.
2.
Ñåìàôîðû äâà (èëè áîëåå) ïðîöåññà èìåþò äîñòóï ê îäíîé ïåðåìåííîé, ïðèíèìàþùåé
çíà÷åíèå 0 èëè 1. Ñàìà ïåðåìåííàÿ ÷àñòî íàõîäèòñÿ â îáëàñòè äàííûõ îïåðàöèîííîé
ñèñòåìû è äîñòóï ê íåé îðãàíèçóåòñÿ ïîñðåäñòâîì ñïåöèàëüíûõ ôóíêöèé.
DR
1.
3.
Ñèãíàëû
ýòî ñîîáùåíèÿ, äîñòàâëÿåìûå ïîñðåäñòâîì îïåðàöèîííîé ñèñòåìû ïðîöåññó.
Ïðîöåññ äîëæåí çàðåãèñòðèðîâàòü îáðàáîò÷èê ýòîãî ñîîáùåíèÿ ó îïåðàöèîííîé ñèñòåìû, ÷òîáû ïîëó÷èòü âîçìîæíîñòü ðåàãèðîâàòü íà íåãî. ×àñòî îïåðàöèîííàÿ ñèñòåìà
èçâåùàåò ïðîöåññ ñèãíàëîì î íàñòóïëåíèè êàêîãî-ëèáî ñáîÿ, íàïðèìåð, äåëåíèè íà 0,
èëè î êàêîì-ëèáî àïïàðàòíîì ïðåðûâàíèè, íàïðèìåð, ïðåðûâàíèè òàéìåðà.
4.
Ïî÷òîâûå ÿùèêè
ýòî î÷åðåäü ñîîáùåíèé (îáû÷íî òåõ èëè èíûõ ñòðóêòóð äàííûõ), êîòîðûå ïîìåùàþòñÿ â ïî÷òîâûé ÿùèê ïðîöåññàìè è/èëè îïåðàöèîííîé ñèñòåìîé.
Íåñêîëüêî ïðîöåññîâ ìîãóò æäàòü ïîñòóïëåíèÿ ñîîáùåíèÿ â ïî÷òîâûé ÿùèê è àêòèâèçèðîâàòüñÿ ïî åãî ïîñòóïëåíèè. Òðåáóåò ïîääåðæêè ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû.
Îïðåäåëåíèå. Ñîáûòèå ýòî îïîâåùåíèå ïðîöåññà ñî ñòîðîíû îïåðàöèîííîé ñèñòåìû
î òîé èëè èíîé ôîðìå ìåæïðîöåññíîãî âçàèìîäåéñòâèÿ, íàïðèìåð, î ïðèíÿòèè ñåìàôîðîì
íóæíîãî çíà÷åíèÿ, î íàëè÷èè ñèãíàëà, î ïîñòóïëåíèè ñîîáùåíèÿ â ïî÷òîâûé ÿùèê.
Ñîçäàíèå, îáåñïå÷åíèå âçàèìîäåéñòâèÿ, ðàçäåëåíèå ïðîöåññîðíîãî âðåìåíè òðåáóåò îò îïåðàöèîííîé ñèñòåìû çíà÷èòåëüíûõ âû÷èñëèòåëüíûõ çàòðàò, îñîáåííî â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ. Ýòî ñâÿçàíî ïðåæäå âñåãî ñ òåì, ÷òî êàæäûé ïðîöåññ èìååò ñâîå îòîáðàæåíèå
âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ, êîòîðîå íàäî ìåíÿòü ïðè ïåðåêëþ÷åíèè ïðîöåññîâ è ïðè
îáåñïå÷åíèè èõ äîñòóïà ê îáúåêòàì âçàèìîäåéñòâèÿ (îáùåé ïàìÿòè, ñåìàôîðàì, ïî÷òîâûì
ÿùèêàì). Î÷åíü ÷àñòî áûâàåò òàê, ÷òî òðåáóåòñÿ çàïóñòèòü íåñêîëüêî êîïèé îäíîé è òîé æå
11
2. Îñíîâíûå ïîëîæåíèÿ
T
ïðîãðàììû, íàïðèìåð, äëÿ óïðàâëåíèÿ íåñêîëüêèìè åäèíèöàìè îäíîãî è òîãî æå îáîðóäîâàíèÿ.  ýòîì ñëó÷àå ìû íåñåì äâîéíûå íàêëàäíûå ðàñõîäû: äåðæèì â îïåðàòèâíîé ïàìÿòè
íåñêîëüêî êîïèé êîäà îäíîé ïðîãðàììû è åùå òðàòèì äîïîëíèòåëüíîå âðåìÿ íà îáåñïå÷åíèå
èõ âçàèìîäåéñòâèÿ. Óëó÷øàåò ñèòóàöèþ ââåäåíèå çàäà÷.
Îïðåäåëåíèå. Çàäà÷à (èëè ïîòîê, èëè íèòü, thread) ýòî êàê-áû îäíà èç âåòâåé
èñïîëíåíèÿ ïðîöåññà:
ðàçäåëÿåò ñ ïðîöåññîì îáëàñòü ïàìÿòè ïîä êîä è äàííûå,
èìååò ñîáñòâåííûé ñòåê,
(â ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ) ðàçäåëÿåò ñ ïðîöåññîì îòîáðàæåíèå âèðòóàëüíîé
ïàìÿòè íà ôèçè÷åñêóþ.
AF
èìååò ñîáñòâåííîå ñîñòîÿíèå.
DR
Òàêèì îáðàçîì, ó äâóõ çàäà÷ â îäíîì ïðîöåññå âñÿ ïàìÿòü ÿâëÿåòñÿ ðàçäåëÿåìîé è äîïîëíèòåëüíûå ðàñõîäû, ñâÿçàííûå ñ ðàçíûì îòîáðàæåíèåì âèðòóàëüíîé ïàìÿòè íà ôèçè÷åñêóþ,
ñâåäåíû ê íóëþ. Äëÿ çàäà÷ òàê æå, êàê äëÿ ïðîöåññîâ, îïðåäåëÿþòñÿ ïîíÿòèÿ ñîñòîÿíèÿ
çàäà÷è è ìåæçàäà÷íîãî âçàèìîäåéñòâèÿ.
Îïðåäåëåíèå. Ðåñóðñ ýòî îáúåêò, íåîáõîäèìûé äëÿ ðàáîòû ïðîöåññó èëè çàäà÷å.
Îïðåäåëåíèå. Ïðèîðèòåò ýòî ÷èñëî, ïðèïèñàííîå îïåðàöèîííîé ñèñòåìîé êàæäîìó
ïðîöåññó è çàäà÷å. ×åì áîëüøå ýòî ÷èñëî, òåì âàæíåå ýòîò ïðîöåññ èëè çàäà÷à è òåì áîëüøå
ïðîöåññîðíîãî âðåìåíè îí èëè îíà ïîëó÷èò. Êàê îòìå÷àëîñü âûøå, ÷àñòî â ÎÑРçàäà÷à
ñ ìåíüøèì ïðèîðèòåòîì ìîæåò âîîáùå íå ïîëó÷èòü óïðàâëåíèÿ ïðè íàëè÷èè â ñîñòîÿíèè
ãîòîâíîñòè çàäà÷è ñ áîëüøèì ïðèîðèòåòîì.
Åñëè â îïåðàöèîííîé ñèñòåìå ìîãóò îäíîâðåìåííî ñóùåñòâîâàòü íåñêîëüêî ïðîöåññîâ
èëè/è çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè âûïîëíÿåòñÿ, òî ãîâîðÿò, ÷òî ýòî ìíîãîçàäà÷íàÿ
ñèñòåìà, à ýòè ïðîöåññû íàçûâàþò ïàðàëëåëüíûìè. Îòìåòèì, ÷òî åñëè ïðîöåññîð îäèí,
òî â êàæäûé ìîìåíò âðåìåíè íà ñàìîì äåëå ðåàëüíî âûïîëíÿåòñÿ òîëüêî îäèí ïðîöåññ èëè
çàäà÷à. Ñèñòåìà ðàçäåëÿåò âðåìÿ ìåæäó òàêèìè âûïîëíÿþùèìèñÿ ïðîöåññàìè/çàäà÷àìè,
äàâàÿ êàæäîìó èç íèõ êâàíò âðåìåíè, ïðîïîðöèîíàëüíûé åãî ïðèîðèòåòó. Ýòîò êâàíò âðåìåíè ÷àñòî íå çàâèñèò îò ñïåöèôèêè ðåøàåìîé çàäà÷è ðåàëüíîãî âðåìåíè, ïîýòîìó òàêîé
ïîäõîä îáû÷íî íå èñïîëüçóåòñÿ â ÎÑÐÂ. Îáû÷íî â ÎÑРâ ñîñòîÿíèè âûïîëíåíèÿ ìîæåò
áûòü òîëüêî îäèí ïðîöåññ. Â õîðîøåé ÎÑÐÂ ýòî ìîæíî èçìåíèòü ïðîãðàììíûì ïóòåì.
Îïðåäåëåíèå. Ñâÿçûâàíèå (ëèíêîâêà, linkage) ýòî ïðîöåññ ïðåâðàùåíèÿ ñêîìïèëèðîâàííîãî êîäà (îáúåêòíûõ ìîäóëåé) â çàãðóçî÷íûé ìîäóëü (ò.å. òî, ÷òî ìîæåò èñïîëíÿòüñÿ
ïðîöåññîðîì ïðè ïîääåðæêå îïåðàöèîííîé ñèñòåìû). Ðàçëè÷àþò:
ñòàòè÷åñêîå ñâÿçûâàíèå,
äèíàìè÷åñêîå ñâÿçûâàíèå,
êîãäà êîä íåîáõîäèìûõ äëÿ ðàáîòû ïðîãðàììû áèáëèîòå÷íûõ ôóíêöèé ôèçè÷åñêè äîáàâëÿåòñÿ ê êîäó îáúåêòíûõ ìîäóëåé äëÿ ïîëó÷åíèÿ
çàãðóçî÷íîãî ìîäóëÿ;
êîãäà â ðåçóëüòèðóþùåì çàãðóçî÷íîì ìîäóëå ïðîñòàâëÿþòñÿ ëèøü ññûëêè íà êîä íåîáõîäèìûõ áèáëèîòå÷íûõ ôóíêöèé; ñàì êîä áóäåò ðåàëüíî
äîáàâëåí ê çàãðóçî÷íîìó ìîäóëþ òîëüêî ïðè åãî èñïîëíåíèè.
Ïðè ñòàòè÷åñêîì ñâÿçûâàíèè çàãðóçî÷íûå ìîäóëè ïîëó÷àþòñÿ î÷åíü áîëüøîãî ðàçìåðà. Ïîýòîìó ïîäàâëÿþùåå áîëüøèíñòâî ñîâðåìåííûõ îïåðàöèîííûõ ñèñòåì èñïîëüçóåò äèíàìè÷åñêîå ñâÿçûâàíèå, íåñìîòðÿ íà òî, ÷òî ïðè ýòîì íà÷àëüíàÿ çàãðóçêà ïðîöåññà íà èñïîëíåíèå
ìåäëåííåå, ÷åì ïðè ñòàòè÷åñêîì ñâÿçûâàíèè èç-çà íåîáõîäèìîñòè ïîèñêà è çàãðóçêè êîäà
íóæíûõ áèáëèîòå÷íûõ ôóíêöèé (÷àñòî òîëüêî òåõ èç íèõ, êîòîðûå íå áûëè çàãðóæåíû äëÿ
äðóãèõ ïðîöåññîâ).
12
2.2. Òèïû çàäà÷
2.2. Òèïû çàäà÷
1.
Öèêëè÷åñêèå
2.
Ïåðèîäè÷åñêèå
3.
Èìïóëüñíûå
ñîâ.
T
Âñÿêèé ïðîöåññ ñîäåðæèò îäíó èëè íåñêîëüêî çàäà÷. Îïåðàöèîííàÿ ñèñòåìà ïîçâîëÿåò
çàäà÷å ïîðîæäàòü íîâûå çàäà÷è. Çàäà÷è ïî ñâîåé ìàíåðå äåéñòâîâàòü ìîæíî ðàçäåëèòü íà 3
êàòåãîðèè.
çàäà÷è. Õàðàêòåðíû äëÿ ïðîöåññîâ óïðàâëåíèÿ è èíòåðàêòèâíûõ ïðîöåñ-
ñèíõðîíèçàöèè.
çàäà÷è. Õàðàêòåðíû äëÿ ìíîãèõ òåõíîëîãè÷åñêèõ ïðîöåññîâ è çàäà÷
AF
çàäà÷è. Õàðàêòåðíû äëÿ çàäà÷ ñèãíàëèçàöèè è àñèíõðîííûõ òåõíîëîãè÷åñêèõ ïðîöåññîâ.
2.3. Âèäû ïðîãðàììèðîâàíèÿ
 çàâèñèìîñòè îò àðõèòåêòóðû öåëåâîãî êîìïüþòåðà è íàçíà÷åíèÿ, ïîäõîäû ê íàïèñàíèþ
ïðîãðàìì ìîæíî ðàçäåëèòü íà 3 ãðóïïû.
1. Ïîñëåäîâàòåëüíîå ïðîãðàììèðîâàíèå. Ïðîãðàììà èñïîëíÿåòñÿ íà îäíîì ïðîöåññîðå â âèäå îäíîãî ïðîöåññà, ñîñòîÿùåãî èç îäíîé çàäà÷è. Ïîâåäåíèå ïðîãðàììû äåòåðìèíèðîâàíî. Ðåçóëüòàò ðàáîòû íå çàâèñèò îò âðåìåííûõ
õàðàêòåðèñòèê êîìïüþòåðà,
òàêèõ, êàê ïðîèçâîäèòåëüíîñòü ïðîöåññîðà, ñêîðîñòü ïåðåêëþ÷åíèÿ çàäà÷, âðåìÿ ðåàêöèè íà âíåøíèå ñîáûòèÿ.
2. Ïàðàëëåëüíîå ïðîãðàììèðîâàíèå. Ðàçëè÷àþò êâàçè-ïàðàëëåëüíûå ïðîãðàììû, ñîñòîÿùèå èç íåñêîëüêèõ íåçàâèñèìûõ ïðîöåññîâ, è èñòèííî-ïàðàëëåëüíûå ïðîãðàììû,
ñîñòîÿùèå èç íåñêîëüêèõ ñâÿçàííûõ ìåæäó ñîáîé ïàðàëëåëüíî ðàáîòàþùèõ ïðîöåññîâ
èëè/è çàäà÷. Êîíå÷íîå ñîñòîÿíèå ïðîãðàììû ìîæåò çàâèñåòü îò âðåìåííûõ
õàðàêòåðèñòèê êîìïüþòåðà, êîãäà ïðîöåññû èëè/è çàäà÷è ìîãóò çàâåðøàòüñÿ â ðàçíîì ïîðÿäêå.
DR
3. Ïðîãðàììèðîâàíèå äëÿ ñèñòåì ðåàëüíîãî âðåìåíè. ßâëÿåòñÿ ïî-íåîáõîäèìîñòè
ïàðàëëåëüíûì, ïîñêîëüêó íà îäíîì êîìïüþòåðå îáû÷íî ðàáîòàþò íåñêîëüêî ïðîöåññîâ
è çàäà÷, óïðàâëÿþùèõ îáîðóäîâàíèåì, íàõîäÿùèìñÿ â îäíîé òåõíîëîãè÷åñêîé öåïî÷êå.
Ïî îïðåäåëåíèþ ðåàëüíîãî âðåìåíè íåîáõîäèìî ãàðàíòèðîâàííî ñîáëþñòè âðåìåííûå
îãðàíè÷åíèÿ è ïðè ýòîì îáåñïå÷èòü ìàêñèìàëüíî âûñîêóþ ñêîðîñòü âûïîëíåíèÿ.
2.4. Âèäû ðåñóðñîâ
Ïî ñâîåé ïðèðîäå ðåñóðñû ìîæíî ðàçäåëèòü íà
àïïàðàòíûå:
ïðîöåññîð,
îáëàñòü ïàìÿòè,
ïåðèôåðèéíûå óñòðîéñòâà,
ïðåðûâàíèÿ,
ïðîãðàììíûå:
ïðîãðàììà,
äàííûå,
ôàéëû,
ñîîáùåíèÿ.
13
2. Îñíîâíûå ïîëîæåíèÿ
Ïðîöåññ 1
Ïðîöåññ 3
Ðàçäåëÿåìûé
íå êðèòè÷íûé
ðåñóðñ
T
Ïðîöåññ 2
Ïðîöåññ 3 Ïðîöåññ 2 Ïðîöåññ 1
Ðàçäåëÿåìûé
êðèòè÷íûé
ðåñóðñ
AF
Ðèñ. 1. Âèäû ðàçäåëÿåìûõ ðåñóðñîâ
Ïî ñâîèì õàðàêòåðèñòèêàì ðåñóðñû ðàçäåëÿþò íà:
àêòèâíûå:
ïàññèâíûå:
ïðèíàäëåæàò îäíîìó ïðîöåññó; âðåìÿ æèçíè ñîâïàäàåò ñ âðåìåíåì æèçíè ïðîöåññà,
ðàçäåëÿåìûå:
ìîãóò áûòü èñïîëüçîâàíû íåñêîëüêèìè ïðîöåññàìè; ñóùåñòâóþò, ïîêà åñòü õîòü
îäèí ïðîöåññ, êîòîðûé èõ èñïîëüçóåò,
ïîñòîÿííûå:
DR
ñïîñîáíû õðàíèòü èíôîðìàöèþ,
ëîêàëüíûå:
ñïîñîáíû èçìåíÿòü èíôîðìàöèþ (ïðîöåññîð),
èñïîëüçóþòñÿ ïîñðåäñòâîì îïåðàöèé çàõâàòèòü è îñâîáîäèòü,
âðåìåííûå
èñïîëüçóþòñÿ ïîñðåäñòâîì îïåðàöèé ñîçäàòü è óäàëèòü.
Ðàçäåëÿåìûå ðåñóðñû áûâàþò:
íå êðèòè÷íûå:
êðèòè÷íûå:
14
ìîãóò áûòü èñïîëüçîâàíû îäíîâðåìåííî íåñêîëüêèìè ïðîöåññàìè (íàïðèìåð, æåñòêèé äèñê èëè êàíàë Ethernet)
ìîãóò áûòü èñïîëüçîâàíû òîëüêî îäíèì ïðîöåññîì, è ïîêà ýòîò ïðîöåññ íå çàâåðøèò ðàáîòó ñ ðåñóðñîì, ïîñëåäíèé íå äîñòóïåí äðóãèì ïðîöåññàì (íàïðèìåð,
ðàçäåëÿåìàÿ ïàìÿòü, äîñòóïíàÿ íà çàïèñü).
2.5. Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ
Ïî òèïó âçàèìîäåéñòâèÿ ðàçëè÷àþò
ñîòðóäíè÷àþùèå ïðîöåññû:
ïðîöåññû, ðàçäåëÿþùèå òîëüêî êîììóíèêàöèîííûé êàíàë, ïî êîòîðîìó îäèí ïåðåäàåò äàííûå, à äðóãîé èõ ïîëó÷àåò;
ïðîöåññû, îñóùåñòâëÿþùèå âçàèìíóþ ñèíõðîíèçàöèþ: êîãäà ðàáîòàåò îäèí, äðóãîé
æäåò îêîí÷àíèÿ åãî ðàáîòû (òèïè÷íî äëÿ ïðîãðàìì, óïðàâëÿþùèõ ðÿäîì òåõíîëîãè÷åñêèõ ïðîöåññîâ);
êîíêóðèðóþùèå ïðîöåññû:
AF
T
2.5. Òèïû âçàèìîäåéñòâèÿ ïðîöåññîâ
ïðîöåññû, èñïîëüçóþùèå ñîâìåñòíî ðàçäåëÿåìûé ðåñóðñ;
ïðîöåññû, èñïîëüçóþùèå êðèòè÷åñêèå ñåêöèè;
ïðîöåññû, èñïîëüçóþùèå âçàèìíûå èñêëþ÷åíèÿ.
DR
Îïðåäåëåíèå. Êðèòè÷åñêàÿ ñåêöèÿ ýòî ó÷àñòîê ïðîãðàììû, íà êîòîðîì çàïðåùàåòñÿ ïåðåêëþ÷åíèå çàäà÷ äëÿ îáåñïå÷åíèÿ èñêëþ÷èòåëüíîãî èñïîëüçîâàíèÿ ðåñóðñîâ òåêóùèì
ïðîöåññîì (çàäà÷åé). Âñå ÎÑРïðåäîñòàâëÿþò ñèñòåìíûå âûçîâû âîéòè â êðèòè÷åñêóþ
ñåêöèþ è âûéòè èç êðèòè÷åñêîé ñåêöèè. Îòìåòèì, ÷òî îáû÷íûå îïåðàöèîííûå ñèñòåìû
òàêîé âîçìîæíîñòè ïîëüçîâàòåëüñêèì ïðîãðàììàì íå äàþò. Âðåìÿ ïðåáûâàíèÿ ïðîöåññà (çàäà÷è) â êðèòè÷åñêîé ñåêöèè äîëæíî áûòü êàê ìîæíî ìåíüøå, òàê êàê èíà÷å ìîæíî íàðóøèòü
âðåìåííûå
îãðàíè÷åíèÿ íà ñêîðîñòü ðåàêöèè íà âíåøíèå ñîáûòèÿ. Õîðîøàÿ ÎÑРäîëæíà
äàæå ïðè íàõîæäåíèè â êðèòè÷åñêîé ñåêöèè ñîáèðàòü ïðåðûâàíèÿ â î÷åðåäü îòëîæåííûõ
ïðåðûâàíèé è îáðàáîòàòü èõ ïðè âûõîäå èç êðèòè÷åñêîé ñåêöèè.
Îïðåäåëåíèå. Âçàèìíîå èñêëþ÷åíèå (mutual exclusion, mutex) ýòî ñïîñîá ñèíõðîíèçàöèè ïàðàëëåëüíî ðàáîòàþùèõ ïðîöåññîâ (çàäà÷), èñïîëüçóþùèõ ðàçäåëÿåìûé ïîñòîÿííûé êðèòè÷íûé ðåñóðñ. Åñëè ðåñóðñ çàíÿò, òî ñèñòåìíûé âûçîâ çàõâàòèòü ðåñóðñ ïåðåâîäèò
ïðîöåññ (çàäà÷ó) èç ñîñòîÿíèÿ âûïîëíåíèÿ â ñîñòîÿíèå îæèäàíèÿ. Êîãäà ðåñóðñ áóäåò îñâîáîæäåí ïîñðåäñòâîì ñèñòåìíîãî âûçîâà îñâîáîäèòü ðåñóðñ, òî ýòîò ïðîöåññ (çàäà÷à) âåðíåòñÿ
â ñîñòîÿíèå âûïîëíåíèÿ è ïðîäîëæèò ñâîþ ðàáîòó. Ðåñóðñ ïðè ýòîì ïåðåéäåò â ñîñòîÿíèå
çàíÿò.
Åñëè ïðîöåññû íåçàâèñèìû (íå èìåþò ñîâìåñòíî èñïîëüçóåìûõ ðåñóðñîâ), òî ñèíõðîíèçàöèÿ èõ ðàáîòû íå òðåáóåòñÿ. Åñëè æå ïðîöåññû èñïîëüçóþò ðàçäåëÿåìûé ðåñóðñ, òî èõ
äåÿòåëüíîñòü íåîáõîäèìî ñèíõðîíèçèðîâàòü. Íàïðèìåð, ïðè èñïîëüçîâàíèè îáùåãî áëîêà
ïàìÿòè ïðîáëåìû ìîãóò âîçíèêíóòü äàæå åñëè îäèí ïðîöåññ (çàäà÷à) òîëüêî ÷èòàåò äàííûå, à äðóãîé òîëüêî ïèøåò.
Ïðè ñèíõðîíèçàöèè çàäà÷ íåîáõîäèìî áîðîòüñÿ ñ 3-ìÿ ïðîáëåìàìè:
1. áëîêèðîâêà (lockout):
ïðîöåññ (çàäà÷à) îæèäàåò ðåñóðñ, êîòîðûé íèêîãäà íå îñâîáîäèòñÿ,
2. òóïèê (deadlock):
äâà ïðîöåññà (çàäà÷è) âëàäåþò êàæäûé ïî ðåñóðñó è îæèäàþò îñâîáîæäåíèÿ ðåñóðñà, êîòîðûì âëàäååò äðóãîé ïðîöåññ (çàäà÷à),
3. ãîëîäîâêà (starvation):
ïðîöåññ (çàäà÷à) ìîíîïîëèçèðîâàë ïðîöåññîð.
Äëÿ ìèíèìèçàöèè ýòèõ ïðîáëåì èñïîëüçóþòñÿ ñëåäóþùèå èäåè.
Êîëè÷åñòâî ðåñóðñîâ îãðàíè÷åíî, ïîýòîìó íåëüçÿ äîïóñêàòü ñîçäàíèÿ çàäà÷, äëÿ êîòîðûõ íåäîñòàòî÷íî ðåñóðñîâ äëÿ âûïîëíåíèÿ.
15
2. Îñíîâíûå ïîëîæåíèÿ
Çàäà÷è äåëÿòñÿ íà ãðóïïû:
íåàêòèâíûå çàäà÷è, êîòîðûì
þùèå ñîáûòèé çàäà÷è; òàêèì
âîîáùå;
íå õâàòèëî äàæå ïàññèâíûõ ðåñóðñîâ, è îæèäàçàäà÷àì àêòèâíûé ðåñóðñ (ïðîöåññîð) íå äàåòñÿ
T
çàäà÷è, ó êîòîðûõ åñòü âñå íåîáõîäèìûå ïàññèâíûå ðåñóðñû, íî íåò ïðîöåññîðà; ÿâëÿþòñÿ êàíäèäàòàìè íà ïîëó÷åíèå ïðîöåññîðà â ñëó÷àå åãî îñâîáîæäåíèÿ;
ãîòîâûå
âûïîëíÿþùèåñÿ
ïðîöåññîð.
çàäà÷è, ó êîòîðûõ åñòü âñå íåîáõîäèìûå ïàññèâíûå ðåñóðñû, è
AF
2.6. Ñîñòîÿíèÿ ïðîöåññà
Ðàññìîòðèì áîëåå äåòàëüíî ñîñòîÿíèÿ ïðîöåññà è ïåðåõîäû èç îäíîãî ñîñòîÿíèÿ â äðóãîå.
Ñîñòîÿíèÿ:
1. íå ñóùåñòâóåò,
2. íå îáñëóæèâàåòñÿ,
3. ãîòîâ,
4. âûïîëíÿåòñÿ,
5. îæèäàåò ðåñóðñ,
6. îæèäàåò íàçíà÷åííîå âðåìÿ,
7. îæèäàåò ñîáûòèÿ.
Ïåðåõîäû èç ñîñòîÿíèÿ â ñîñòîÿíèå:
1. ïåðåõîä 1 2: ñîçäàíèå ïðîöåññà
DR
2. ïåðåõîä 2 1: óíè÷òîæåíèå ïðîöåññà
3. ïåðåõîä 2 3: àêòèâèçàöèÿ ïðîöåññà äèñïåò÷åðîì
4. ïåðåõîä 3 2: äåçàêòèâèçàöèÿ ïðîöåññà
5. ïåðåõîä 3 4: çàãðóçêà íà âûïîëíåíèå ïðîöåññà äèñïåò÷åðîì
6. ïåðåõîä 4 3: òðåáîâàíèå îáñëóæèâàíèÿ îò ïðîöåññîðà äðóãèì ïðîöåññîì
7. ïåðåõîä 4 2: çàâåðøåíèå ïðîöåññà
8. ïåðåõîä 4 5: áëîêèðîâêà ïðîöåññà äî îñâîáîæäåíèÿ òðåáóåìîãî ðåñóðñà
9. ïåðåõîä 4 6: áëîêèðîâêà ïðîöåññà äî èñòå÷åíèÿ çàäàííîãî âðåìåíè
10. ïåðåõîä 4 7: áëîêèðîâêà ïðîöåññà äî ïðèõîäà ñîáûòèÿ
11. ïåðåõîä 2 6: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ âðåìåííîé çàäåðæêè
12. ïåðåõîä 2 7: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ ñîáûòèÿ
13. ïåðåõîä 2 5: àêòèâèçàöèÿ ïðîöåññà ïðèâîäèò ê îæèäàíèþ îñâîáîæäåíèÿ ðåñóðñà
14. ïåðåõîä 5 3: àêòèâèçàöèÿ ïðîöåññà èç-çà îñâîáîæäåíèÿ îæèäàâøåãîñÿ ðåñóðñà
15. ïåðåõîä 6 3: àêòèâèçàöèÿ ïðîöåññà ïî èñòå÷åíèå çàäàííîãî âðåìåíè
16
3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
16. ïåðåõîä 7 3: àêòèâèçàöèÿ ïðîöåññà èç-çà ïðèõîäà îæèäàâøåãîñÿ ñîáûòèÿ
T
Ïåðåõîä 4 3 â ñèñòåìàõ ðåàëüíîãî âðåìåíè ïðîèñõîäèò ñðàçó, êàê òîëüêî â ñîñòîÿíèå ãîòîâíîñòè ïåðåéäåò ïðîöåññ ñ áîëüøèì ïðèîðèòåòîì. Òàêîé ìåõàíèçì íàçûâàþò ïðèîðèòåòíûì
ïåðåêëþ÷åíèåì (preemption, áóêâàëüíî: ïðèîðèòåòíîå ïðàâî íà ïîêóïêó). Ñèñòåìà ðåàëüíîãî
âðåìåíè äîëæíà îñóùåñòâëÿòü ïåðåêëþ÷åíèå çàäà÷ â ñîîòâåòñòâèè ñ ýòèì ïðèíöèïîì.
3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
AF
 ýòîì ðàçäåëå ìû ðàññìîòðèì ñóùåñòâóþùèå ñòàíäàðòû íà ÎÑÐÂ. Êàê è âî ìíîãèõ
äðóãèõ îáëàñòÿõ, ñòàíäàðòû ñòàëè ïîÿâëÿòüñÿ ëèøü ïîñëå òîãî, êàê óæå áûë ñîçäàí ðÿä
ÎÑÐÂ. Îñíîâíîé öåëüþ ââåäåíèÿ ñòàíäàðòîâ ÿâëÿåòñÿ îáëåã÷åíèå ïåðåíîñà ïðîãðàììíîãî
îáåñïå÷åíèÿ èç îäíîé ñèñòåìû â äðóãóþ. Îòìåòèì, ÷òî ðàçðàáîò÷èêè ñèñòåì ðåàëüíîãî âðåìåíè ÷àñòî ñòàâÿò çàäà÷ó îáåñïå÷åíèÿ ìàêñèìàëüíîé ñêîðîñòè ðàáîòû è êîìïàêòíîñòè ÎÑÐÂ
âûøå çàäà÷è åå ñòàíäàðòèçàöèè. Ïîýòîìó, ñ îäíîé ñòîðîíû, ñðåäè ÎÑРïðåîáëàäàþò ñèñòåìû ñ óíèêàëüíûì óñòðîéñòâîì, à ñ äðóãîé ñòîðîíû, ìíîãèå ñòàíäàðòû íîñÿò âåñüìà îáùèé
õàðàêòåð. Ïðè ýòîì äàæå ñèñòåìû, äåêëàðèðóþùèå ñâîþ ñîâìåñòèìîñòü ñ íåêîòîðûì ñòàíäàðòîì, îáû÷íî ñîäåðæàò ðÿä ðàñøèðåíèé, âûõîäÿùèõ çà åãî ðàìêè. Òåì íå ìåíåå, âàæíîñòü
ñòàíäàðòîâ ñîñòîèò â òîì, ÷òî îíè ôàêòè÷åñêè âûñòóïàþò â êà÷åñòâå àêñèîìàòè÷åñêîé áàçû,
çàäàþùåé îïðåäåëåíèÿ ðàññìàòðèâàåìûõ îáúåêòîâ è ïîíÿòèé.
Ìû êðàòêî ðàññìîòðèì íåñêîëüêî ñòàíäàðòîâ. Ïîäðîáíî áóäåò ðàññìîòðåí òîëüêî íàèáîëåå ñòàðûé è çàâåðøåííûé èç íèõ åâðîïåéñêèé ñòàíäàðò SCEPTRE.
3.1. Íîðìû ESSE êîíñîðöèóìà VITA
DR
Íîðìû ESSE êîíñîðöèóìà VITA (VMEbus International Trade Association) íàõîäÿòñÿ â
ñòàäèè ðàçðàáîòêè, íî óæå îêàçûâàþò âëèÿíèå íà ðàçðàáîò÷èêîâ ÎÑРâ ñèëó âåñîìîñòè
îðãàíèçàöèè VITA (íàïîìíèì, øèíà VME çàíèìàåò ëèäèðóþùåå ïîëîæåíèå ñðåäè øèí äëÿ
ïðîìûøëåííûõ êîìïüþòåðîâ è âñòðàèâàåìûõ ñèñòåì). Íîðìû ïðåæäå âñåãî îðèåíòèðîâàíû
íà óíèôèêàöèþ ïðèëîæåíèé äëÿ âñòðàèâàåìûõ ñèñòåì â îáëàñòè òåëåêîììóíèêàöèé, àâòîìîáèëåñòðîåíèÿ è ïðîìûøëåííîñòè. Îñíîâíîé öåëüþ íîðì ESSE òàêæå ÿâëÿåòñÿ ñòàíäàðòèçàöèÿ ÎÑÐÂ (ÿäðà è ïîäñèñòåìû ââîäà/âûâîäà).
3.2. Ñòàíäàðò POSIX 1003.1b
Ñòàíäàðò POSIX (Portable Operating System Interface) 1003.1b, ðàíåå ñóùåñòâîâàâøèé
ïîä ðàáî÷èì èìåíåì POSIX 1003.4 è ðàçðàáîòàííûé IEEE (Institute of Electrical and Electronical Engineers), îïðåäåëÿåò ðàñøèðåíèÿ ñòàíäàðòà POSIX 1001 íà îïåðàöèîííûå ñèñòåìû
UNIX, êîòîðûå ïîçâîëÿþò èñïîëüçîâàòü ïîñëåäíèå â êà÷åñòâå ÎÑÐÂ. Áîëüøèíñòâî ïðèëîæåíèé UNIX ìîãóò áûòü ïåðåíåñåíû â òàêèå ñèñòåìû, ïîñêîëüêó ñòàíäàðò POSIX 1003.1b
îáåñïå÷èâàåò åäèíûé ñ ñèñòåìàìè UNIX ïðîãðàììíûé èíòåðôåéñ (API, application interface).
Ñòàíäàðò POSIX 1003 ñîñòîèò ñëåäóþùèõ ÷àñòåé.
1. POSIX 1003.1 îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå êîìïîíåíòû îïåðàöèîííîé ñèñòåìû,
API äëÿ ïðîöåññîâ, ôàéëîâîé ñèñòåìû, óñòðîéñòâ è ò.ä.
2. POSIX 1003.2 îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå óòèëèòû.
3. POSIX 1003.1b îïðåäåëÿåò ñòàíäàðò íà îñíîâíûå ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè.
4. POSIX 1003.1ñ îïðåäåëÿåò ñòàíäàðò íà çàäà÷è (threads).
5. POSIX 1003.1d îïðåäåëÿåò ñòàíäàðò íà äîïîëíèòåëüíûå ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè (òàêèå, êàê, íàïðèìåð, ïîääåðæêà îáðàáîò÷èêîâ ïðåðûâàíèé); ýòîò ñòàíäàðò åùå
17
3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
T
îôèöèàëüíî íå óòâåðæäåí, íî íåêîòîðûå ÎÑÐÂ çàÿâëÿþò î ñâîåé ïîääåðæêå íåêîòîðûõ
åãî ÷àñòåé.
Ñòàíäàðòó POSIX 1003 ñ ðàñøèðåíèåì 1003.1b óäîâëåòâîðÿþò òàêèå ñèñòåìû, êàê Lynx,
VxWorks, QNX. Íåêîòîðûå ñèñòåìû, íàïðèìåð, CHORUS, îáåñïå÷èâàþò ïîääåðæêó ñòàíäàðòà 1003.1b ïðè çàãðóçêå ïîñòàâëÿåìîãî ïðîãðàììíîãî îáåñïå÷åíèÿ, ò.å. èìåþò êàê áû äâà
òèïà API: îðèãèíàëüíûé ñîáñòâåííûé è ñòàíäàðòíûé.
3.3. Ñòàíäàðò SCEPTRE
AF
Ñòàíäàðò SCEPTRE (Standartisation du Cur des Executifs des Produits Temps Reel Europeens) (åâðîïåéñêèé ñòàíäàðò íà îñíîâû ñèñòåì ðåàëüíîãî âðåìåíè, çäåñü èãðà ñëîâ: sceptre
ïî-ôðàíöóçñêè îçíà÷àåò ñêèïåòð) ðàçðàáàòûâàëñÿ â 198090 ãîäû. Çà âðåìÿ åãî ñîçäàíèÿ
ïîÿâèëèñü íîâûå êîíöåïöèè â ÎÑÐÂ, íå âñå èç êîòîðûõ óñïåëè íàéòè îòðàæåíèå â ñòàíäàðòå.
 ñòàíäàðòå
îáúåäèíåíû óñèëèÿ èíæåíåðîâ è èññëåäîâàòåëåé â ðàçðàáîòêå ãðóïï ñïåöèôèêàöèé äëÿ
ïðîìûøëåííûõ ïðèëîæåíèé;
äàíû îïðåäåëåíèÿ è îïèñàíèÿ íàáîðà ìåòîäîâ è ïîäõîäîâ, èñïîëüçóåìûõ â ÎÑÐÂ;
îïðåäåëåíû ñåìü îñíîâíûõ öåëåé, êîòîðûå äîëæíà ïðåñëåäîâàòü ÎÑÐÂ; ýòî:
1. àäåêâàòíîñòü ïîñòàâëåííîé çàäà÷å,
2. áåçîïàñíîñòü (ñèñòåìà äîëæíà áûòü ìàêñèìàëüíî óñòîé÷èâîé ê àïïàðàòíûì è ïðîãðàììíûì ñáîÿì),
3. ìèíèìàëüíàÿ ñòîèìîñòü,
4. ìàêñèìàëüíàÿ ïðîèçâîäèòåëüíîñòü,
5. ïåðåíîñèìîñòü (âîçìîæíîñòü ðåàëèçîâàòü ñèñòåìó íà äðóãîì òèïå ïðîöåññîðà, àäåêâàòíîì ïîñòàâëåííîé çàäà÷å),
6. àäàïòèâíîñòü (ñïîñîáíîñòü ñèñòåìû ïðèñïîñàáëèâàòüñÿ ê íîâîìó óïðàâëÿåìîìó åþ
îáîðóäîâàíèþ è/èëè çàäà÷àì),
DR
7. ìîäóëüíîñòü (ñèñòåìà äîëæíà ñîñòîÿòü èç äîñòàòî÷íî íåçàâèñèìûõ êîìïîíåíò, èç
êîòîðûõ ìîæíî ïîñòðîèòü ñèñòåìó, äîñòàòî÷íóþ äëÿ ðåøåíèÿ ïîñòàâëåííîé çàäà÷è
íà èìåþùåìñÿ îáîðóäîâàíèè).
Âåñü ñåðâèñ, ïðåäîñòàâëÿåìûé îïåðàöèîííîé ñèñòåìîé, ðàçäåëåí â ñòàíäàðòå íà ñëåäóþùèå ãðóïïû:
18
êîììóíèêàöèè (ìåæïðîöåññíîå âçàèìîäåéñòâèå),
ñèíõðîíèçàöèÿ (ñèíõðîíèçàöèÿ ïðîöåññîâ),
êîíòðîëü è ïëàíèðîâàíèå çàäà÷,
óïðàâëåíèå ïàìÿòüþ,
óïðàâëåíèå ïðåðûâàíèÿìè è îáîðóäîâàíèåì ââîäà/âûâîäà,
âûñîêîóðîâíåâûé èíòåðôåéñ ââîäà/âûâîäà è óïðàâëåíèÿ ïåðèôåðèéíûìè óñòðîéñòâàìè,
óïðàâëåíèå ôàéëàìè,
óïðàâëåíèå òðàíçàêöèÿìè (ñîîáùåíèÿìè è ïåðåäà÷àìè äàííûõ),
îáðàáîòêà îøèáîê è èñêëþ÷åíèé,
3.3. Ñòàíäàðò SCEPTRE
óïðàâëåíèå âðåìåíåì.
T
Îñíîâíûå ôóíêöèè îïåðàöèîííîé ñèñòåìû ðàçäåëåíû ñòàíäàðòîì íà ñëåäóþùèå ãðóïïû:
âûäåëåíèå ïàìÿòè è àäðåñàöèÿ îáúåêòîâ,
ñîçäàíèå è óäàëåíèå îáúåêòîâ,
äîñòóï ê äðóãèì ìàøèíàì.
Ñòàíäàðò ðàçäåëÿåò çàäà÷è íà äâà êëàññà.
(íåïîñðåäñòâåííûå) çàäà÷è ýòî çàäà÷è, îáåñïå÷èâàþùèå èíòåðôåéñ ìåæäó ïðèëîæåíèåì è åãî âíåøíèì îêðóæåíèåì, íàïðèìåð, çàäà÷è ââîäà/âûâîäà, çàäà÷è,
îáðàáàòûâàþùèå ñîáûòèÿ òàéìåðà. Òàêèå çàäà÷è àêòèâèçèðóþòñÿ íåïîñðåäñòâåííî ñèãíàëîì, ïðèõîäÿùèì ñ óïðàâëÿåìîãî èíòåðôåéñà (èç âíåøíåãî ìèðà). Ýòà àêòèâèçàöèÿ
ðåàëèçóåòñÿ ïîñðåäñòâîì ìåõàíèçìà ïðåðûâàíèé.
Ïðÿìûå
AF
Êîñâåííûå (îòëîæåííûå) çàäà÷è ýòî çàäà÷è, àêòèâèçèðóåìûå äðóãèìè çàäà÷àìè.
Òàêèå çàäà÷è îïåðèðóþò ñ äàííûìè, ïîëó÷åííûìè îò ïðÿìûõ çàäà÷ èëè îò äðóãèõ
êîñâåííûõ çàäà÷.
Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû âçàèìîîòíîøåíèé ìåæäó çàäà÷àìè:
ñîçäàíèå,
óäàëåíèå,
àêòèâèçàöèÿ,
îñòàíîâêà,
êîììóíèêàöèÿ,
ñèíõðîíèçàöèÿ,
îáìåí ñèãíàëàìè,
DR
âçàèìíîå èñêëþ÷åíèå.
Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû ñîñòîÿíèÿ çàäà÷.
Íå ñóùåñòâóåò:
íåò ñâÿçàííîãî ñ çàäà÷åé äåñêðèïòîðà (ñòðóêòóðû äàííûõ, õàðàêòåðèçóþùåé çàäà÷ó ñ òî÷êè çðåíèÿ îïåðàöèîííîé ñèñòåìû).
Ñóùåñòâóåò:
çàäà÷à îáëàäàåò îïðåäåëåííûì äåñêðèïòîðîì.
Íå èñïîëíèìà:
ñÿ.
Èñïîëíèìà:
çàäà÷à ñóùåñòâóåò, íî íå ìîæåò íè àêòèâèçèðîâàòüñÿ, íè ïðîäîëæèòü-
çàäà÷à ñóùåñòâóåò è åå ìîæíî èñïîëíèòü.
Íå îáñëóæèâàåòñÿ:
øåíà.
çàäà÷à èñïîëíèìà, íî òðåáóåò àêòèâèçàöèè èëè óñïåøíî çàâåð-
Îæèäàåò:
Àêòèâíà: çàäà÷à îáñëóæèâàåòñÿ è íå îæèäàåò âûïîëíåíèÿ êàêîãî-ëèáî óñëîâèÿ, à òîëü-
Îáñëóæèâàåòñÿ:
çàäà÷à èñïîëíèìà, íà÷èíàåò èñïîëíåíèå è íå òåðìèíèðîâàíà.
çàäà÷à îáñëóæèâàåòñÿ è îæèäàåò âûïîëíåíèÿ îïðåäåëåííîãî óñëîâèÿ äëÿ
ïðîäîëæåíèÿ ñâîåãî èñïîëíåíèÿ.
êî îæèäàåò êîãäà îñâîáîäèòñÿ ïðîöåññîð îò äðóãèõ çàäà÷.
19
3. Ñòàíäàðòû íà îïåðàöèîííûå ñèñòåìû ðåàëüíîãî âðåìåíè
Ãîòîâà:
çàäà÷à àêòèâíà è îæèäàåò ïðîöåññîðà.
Âûïîëíÿåòñÿ:
çàäà÷à èñïîëüçóåò ïðîöåññîð.
T
Ñòàíäàðò îïðåäåëÿåò îñíîâíûå âèäû ìåæçàäà÷íîãî âçàèìîäåéñòâèÿ:
Îáìåí ñèãíàëàìè (ñîáûòèÿìè).
Õîòÿ ñîáûòèå ïðåäïîëàãàåò íàëè÷èå õîòÿ áû äâóõ
çàäà÷, ñòàíäàðò SCEPTRE àññîöèèðóåò ñîáûòèå ñ åäèíñòâåííîé çàäà÷åé. Ñäåëàíî ýòî
ïî ñëåäóþùèì ïðè÷èíàì:
õîòÿ ñîáûòèå ìîæåò îæèäàòüñÿ íåñêîëüêèìè çàäà÷àìè, ñ íèì íåîáõîäèìî ñâÿçàíà
åäèíñòâåííàÿ î÷åðåäü îæèäàíèÿ;
àññîöèàöèÿ ñîáûòèÿ òîëüêî ñ îäíîé çàäà÷åé ìèíèìèçèðóåò ðàñõîäû íà àäðåñàöèþ
ïðè îáìåíå ñîáûòèÿìè (âñÿ íåîáõîäèìàÿ èíôîðìàöèÿ, êîòîðîé îáìåíèâàþòñÿ çàäà÷è äîëæíà áûòü çàëîæåíà â ñàìîì ñîáûòèè).
AF
Õîòÿ ñîáûòèå ñâÿçàíî ñ îäíîé çàäà÷åé, îáìåí ñîáûòèÿìè ìåæäó äâóìÿ çàäà÷àìè ÿâëÿåòñÿ îïåðàöèåé, â êîòîðîé ó÷àñòâóþò îáå çàäà÷è: îäíà çàäà÷à æäåò ñèãíàëà, à âòîðàÿ åãî
ïîñûëàåò. Ñîáûòèå ñ òî÷êè çðåíèÿ SCEPTRE ýòî îáúåêò, ïðèíèìàþùèé äâà ñîñòîÿíèÿ: ïðèáûë èëè íå ïðèáûë. Íàä ñîáûòèÿìè îïðåäåëåíû ýëåìåíòàðíûå îïåðàöèè:
ïîñëàòü,
îæèäàòü,
î÷èñòèòü (óäàëèòü ïîñòóïèâøåå ñîáûòèå),
ïðîâåðèòü (ïîñòóïëåíèå).
Êîììóíèêàöèÿ. Ñòðàòåãèè êîììóíèêàöèè ìåæäó çàäà÷àìè, ðàáîòàþùèìè íà îäíîì
êîìïüþòåðå, ðåàëèçîâàíû â âèäå îäíîé ñòðóêòóðû î÷åðåäè:
î÷åðåäè îæèäàþùèõ çàäà÷,
î÷åðåäè ñîîáùåíèé.
DR
Íàä î÷åðåäÿìè (îðãàíèçîâàííûìè ïî ïðèíöèïó FIFO, First In - First Out) îïðåäåëåíû
ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè:
ïîëîæèòü ýëåìåíò (çàäà÷ó, ñîîáùåíèå) â î÷åðåäü,
âçÿòü ýëåìåíò (çàäà÷ó, ñîîáùåíèå) èç î÷åðåäè,
î÷èñòèòü î÷åðåäü,
ïðîâåðèòü íàëè÷èå ýëåìåíòà (çàäà÷è, ñîîáùåíèÿ).
Èñêëþ÷åíèÿ ýòî íåîæèäàííàÿ ñèòóàöèÿ, â ðåçóëüòàòå êîòîðîé çàäà÷à íå ìîæåò äàëåå
èñïîëíÿòüñÿ. Äåòåêòèðîâàíèå èñêëþ÷åíèé ìîæåò áûòü ïðîãðàììíûì èëè àïïàðàòíûì.
Òèïû èñêëþ÷åíèé:
ñèíõðîííûå
(íàïðèìåð, ïðè ïîäñ÷åòå âðåìåíè),
àñèíõðîííûå
(âñå îñòàëüíûå, íàïðèìåð, ñèòóàöèÿ äåëåíèÿ íà 0).
Äëÿ îáñëóæèâàíèÿ èñêëþ÷åíèÿ íåîáõîäèìû:
20
îáñëóæèâàþùàÿ ïðîãðàììà,
ñîîòâåòñòâóþùàÿ çàäà÷à (â ñîñòîÿíèè îæèäàíèÿ èñêëþ÷åíèÿ),
ìåõàíèçì ïåðåêëþ÷åíèÿ îò òåêóùåé çàäà÷è ê çàäà÷å îáðàáîòêè èñêëþ÷åíèÿ,
ìåõàíèçì âîçâðàòà èç çàäà÷è îáðàáîòêè èñêëþ÷åíèÿ ê òåêóùåé çàäà÷å.
Ñåìàôîðû
ýòî âûñîêîóðîâíåâûé ìåõàíèçì ñèíõðîíèçàöèè çàäà÷. Ðàçëè÷àþò:
3.3. Ñòàíäàðò SCEPTRE
ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû êðèòè÷íîãî ðàçäåëÿåìîãî ðåñóðñà; îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè:
âçÿòü (åñëè ñåìàôîð óæå âçÿò äðóãîé çàäà÷åé, òî ýòà îïåðàöèÿ ïåðåâîäèò
çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ îñâîáîæäåíèÿ ñåìàôîðà),
âåðíóòü (åñëè ñåìàôîð îæèäàåòñÿ äðóãîé çàäà÷åé, òî îíà ìîæåò áûòü àêòèâèçèðîâàíà è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò
âûøå),
ïîïðîáîâàòü âçÿòü (åñëè ñåìàôîð ñâîáîäåí, òî âçÿòü åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è â ñîñòîÿíèå îæèäàíèÿ; èñïîëüçóåòñÿ, åñëè çàäà÷à ìîæåò ïðîäîëæèòü ðàáîòó áåç çàòðåáîâàííîãî ðåñóðñà, íàïðèìåð, åñëè ìîæíî èñïîëüçîâàòü äðóãîé ðåñóðñ).
AF
T
Äâîè÷íûå (áóëåâñêèå) ñåìàôîðû
Îäèí ñåìàôîð ìîæåò îæèäàòüñÿ íåñêîëüêèìè çàäà÷àìè, ïîýòîìó ñèñòåìà îðãàíèçóåò î÷åðåäü çàäà÷, îæèäàþùèõ ñåìàôîð.  ýòîé î÷åðåäè ìîãóò áûòü çàäà÷è ñ
ðàçíûì ïðèîðèòåòîì, ïîýòîìó äîëæíà áûòü âîçìîæíîñòü óïðàâëåíèÿ ïîðÿäêîì àêòèâèçàöèè çàäà÷ èç î÷åðåäè (â ïîðÿäêå ïîñòóïëåíèÿ (FIFO) èëè â ïîðÿäêå ïîñòóïëåíèÿ, íà÷èíàÿ ñ ñàìûõ ïðèîðèòåòíûõ (òàêàÿ î÷åðåäü íàçûâàåòñÿ ïðèîðèòåòíîé)).
ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû ðåñóðñà,
êîòîðûé ìîæåò áûòü îäíîâðåìåííî èñïîëüçîâàí íå áîëåå, ÷åì îãðàíè÷åííûì ôèêñèðîâàííûì ÷èñëîì çàäà÷ (íàïðèìåð, 4-õ êàíàëüíûé ïîðò ââîäà/âûâîäà ìîæåò
áûòü èñïîëüçîâàí íå áîëåå ÷åì ÷åòûðüìÿ çàäà÷àìè, òðåáóþùèìè ïî îäíîìó êàíàëó êàæäàÿ). Ñåìàôîð ïðåäñòàâëÿåò ñîáîé ñ÷åò÷èê, óìåíüøàåìûé ïðè êàæäîé
âûäà÷å ðåñóðñà è óâåëè÷èâàåìûé ïðè êàæäîì åãî âîçâðàùåíèè. Åñëè ñ÷åò÷èê íå
íàõîäèòñÿ â çàäàííîì äèàïàçîíå (ðåñóðñà áîëüøå íåò), òî ïðè çàòðåáîâàíèè ðåñóðñà çàäà÷à ïåðåéäåò â ñîñòîÿíèå îæèäàíèÿ. Íàä ñåìàôîðîì îïðåäåëåíû ñëåäóþùèå
ýëåìåíòàðíûå îïåðàöèè:
Ñ÷åòíûå ñåìàôîðû
DR
âçÿòü k åäèíèö èç ñåìàôîðà, ò.å. óìåíüøèòü ñ÷åò÷èê íà k (åñëè â ñ÷åò÷èêå íåò
k åäèíèö, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ íàëè÷èÿ
êàê ìèíèìóì k åäèíèö â ñåìàôîðå),
âåðíóòü k åäèíèö â ñåìàôîð, ò.å. óâåëè÷èòü ñ÷åò÷èê íà k (åñëè ñåìàôîð îæèäàåòñÿ äðóãîé çàäà÷åé è åé òðåáóåòñÿ íå áîëåå k åäèíèö, òî îíà ìîæåò áûòü
àêòèâèçèðîâàíà è ìîæåò âûòåñíèòü òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå),
ïîïðîáîâàòü âçÿòü k åäèíèö èç ñåìàôîðà (åñëè ñåìàôîð ñâîáîäåí, òî âçÿòü k
åäèíèö èç åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è
â ñîñòîÿíèå îæèäàíèÿ).
Êàê è äëÿ äâîè÷íûõ ñåìàôîðîâ ñèñòåìà îðãàíèçóåò
îæèäàþùèõ ñåìàôîð.
ïðèîðèòåòíóþ î÷åðåäü çàäà÷,
Ìîäåëü êëèåíò ñåðâåð ýòî âûñîêîóðîâíåâûé êîìáèíèðîâàííûé ìåõàíèçì êîììóíèêàöèè çàäà÷. Ñîñòîèò èç î÷åðåäè ïåðåäàâàåìîé èíôîðìàöèè (ñîîáùåíèé) è ñîáûòèÿ,
ïîñûëàåìîãî â ñëó÷àå, åñëè î÷åðåäü íå ïóñòà.
 íàñòîÿùèé ìîìåíò ñòàíäàðò ðàçâèâàåòñÿ äëÿ ïîääåðæàíèÿ:
òðåáîâàíèé æåñòêîãî ðåàëüíîãî âðåìåíè,
íåçàâèñèìîñòè îò îêðóæåíèÿ (òèïà ïðîöåññîðà, âèäà êîìïüþòåðà, ÿçûêà ðàçðàáîòêè
ïðèëîæåíèé),
ðàñïðåäåëåííûõ è ìíîãîïðîöåññîðíûõ âû÷èñëåíèé,
òðåáîâàíèé ïîâûøåííîé íàäåæíîñòè.
21
4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
T
4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî
âðåìåíè
 ýòîì ðàçäåëå ìû ðàññìîòðèì áàçèñíûå ïðèíöèïû âíóòðåííåãî óñòðîéñòâà îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè. Ìû ðàññìîòðèì êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé
ïîäõîäû ê ïîñòðîåíèþ ÎÑÐÂ, à òàêæå òðè îñíîâíûõ òèïà àðõèòåêòóð ÎÑÐÂ:
1. ìîíîëèòíûé,
2. ìîäóëüíûé,
AF
3. îáúåêòíûé.
4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè
Ðàññìîòðèì êðàòêî, íà óðîâíå èäåé, î÷åíü ïîïóëÿðíûé â ïîñëåäíåå âðåìÿ îáúåêòíîîðèåíòèðîâàííûé ïîäõîä ê ðàçðàáîòêå ïðîãðàììíîãî îáåñïå÷åíèÿ.
Âñÿêàÿ ïðîãðàììà, ðàáîòàþùàÿ (óïðàâëÿþùàÿ, àíàëèçèðóþùàÿ è ò.ä.) ñ íåêîé ñèñòåìîé
(ïðîãðàììíîé, àïïàðàòíîé è ò.ä.), ôàêòè÷åñêè ðàáîòàåò ñ íåêèì ôîðìàëèçîâàííûì ïðåäñòàâëåíèåì îá ýòîé ñèñòåìå, íàçûâàåìîì ìîäåëüþ. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä ýòî òåõíèêà ïîñòðîåíèÿ è îïèñàíèÿ ýòîé ìîäåëè.  ýòîé òåõíèêå ìû ìîäåëèðóåì ñèñòåìó
êàê íåêîòîðîå êîëè÷åñòâî âçàèìîäåéñòâóþùèõ îáúåêòîâ. Òàêèì îáðàçîì, âíå çàâèñèìîñòè îò
òèïà ìîäåëèðóåìîé ñèñòåìû ìû ïðåäñòàâëÿåì åå ñîäåðæàíèå êàê íàáîð îáúåêòîâ ñ òåìè èëè
èíûìè ñâÿçÿìè ìåæäó íèìè. Êàêèå îáúåêòû áóäóò âêëþ÷åíû â ìîäåëü è êàêèå ñâÿçè ìåæäó
íèìè áóäóò ó÷òåíû â ìîäåëè, çàâèñèò îò ïîñòàâëåííîé çàäà÷è.
×åëîâå÷åñêîå ìûøëåíèå âîñïðèíèìàåò îêðóæàþùèé ìèð â òåðìèíàõ îáúåêòîâ. Ïîýòîìó
ïðè èñïîëüçîâàíèè îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ÷åëîâåêó ëåã÷å ñîçäàâàòü ìîäåëü,
è ñàìà ìîäåëü ïîëó÷àåòñÿ ïîíÿòíåå è áîëåå ñîîòíîñèòñÿ ñ ðåàëüíîñòüþ. Äëÿ âíåñåíèÿ
óòî÷íåíèé â ìîäåëü è/èëè åå ìîäèôèêàöèè ÷àñòî äîñòàòî÷íî âíåñòè ëîêàëüíûå èçìåíåíèÿ
â îäèí îáúåêò.
4.1.1. Îáúåêòû
DR
Îáúåêò õàðàêòåðèçóåòñÿ íàáîðîì îïåðàöèé è ñîñòîÿíèåì, çàïîìèíàþùèì ýôôåêò îò ýòèõ
îïåðàöèé. Ñíàðóæè îáúåêòà (ò.å. èñïîëüçóÿ åãî â ìîäåëè) ìû âèäèì òîëüêî ýòè îïåðàöèè, íî
íå òî, êàê îíè óñòðîåíû è êàê ðàáîòàþò. Âíóòðåííîñòü îáúåêòà (åãî âíóòðåííÿÿ èíôîðìàöèÿ)
ñêðûòà îò äðóãèõ îáúåêòîâ. Äðóãèìè ñëîâàìè, îáúåêò õàðàêòåðèçóåòñÿ òåì, ÷òî îí âûïîëíÿåò, íî íå òåì, êàê îí ýòî äåëàåò. Âíóòðè îáúåêòà ìû ìîæåì âèäåòü åãî èíôîðìàöèîííóþ
ñòðóêòóðó è äåòàëè ðåàëèçàöèè åãî îïåðàöèé. Â èíôîðìàöèîííîé ñòðóêòóðå âûäåëÿþò òðè
êîìïîíåíòû:
÷àñòè îáúåêòà (åñëè ïðèñóòñòâóþò)
ïîâåäåíèå
àòðèáóòû
îáúåêòà îñíîâíûå õàðàêòåðèñòèêè, êîòîðûå íàäî ïîìíèòü îá îáúåêòå;
ýòî äðóãèå îáúåêòû, èç êîòîðûõ ñîñòàâëåí äàííûé
îáúåêò, êîòîðûé â ýòîì ñëó÷àå íàçûâàåòñÿ àãðåãàòíûì (ñîñòàâíûì) (íàïðèìåð, îáúåêò
÷åëîâåê ìîæåò áûòü ïðåäñòàâëåí êàê ñîñòîÿùèé èç îáúåêòîâ ðóêà, íîãà è ò.ä.),
îáúåêòà ýòî íàáîð îïåðàöèé ñ îáúåêòîì.
Îòíîøåíèÿ ìåæäó îáúåêòàìè â ìîäåëè ðàçäåëÿþò íà
ñòàòè÷åñêèå, ñóùåñòâóþùèå â òå÷åíèå äëèòåëüíîãî âðåìåíè è ïîäðàçóìåâàþùèå, ÷òî
âçàèìîäåéñòâóþùèå îáúåêòû çíàþò î ñóùåñòâîâàíèè äðóã äðóãà;
äèíàìè÷åñêèå,
êîãäà îáúåêòû óñòàíàâëèâàþò ñâÿçü ìåæäó ñîáîé â ïðîöåññå ðàáîòû.
Ýòè îòíîøåíèÿ ìåæäó îáúåêòàìè A è B ðåàëèçóþòñÿ â âèäå ïîñûëêè îáúåêòîì A
çàïðîñà íà âûïîëíåíèå òîé èëè èíîé îïåðàöèè (îáúåêòà B ) îáúåêòó B . Ñ ïðîãðàììíîé
òî÷êè çðåíèÿ ïîä çàïðîñîì îáû÷íî ïîíèìàþò ïîñûëêó ñîîáùåíèÿ.
22
4.1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè
T
Âñÿ èíôîðìàöèÿ â îáúåêòíî-îðèåíòèðîâàííîé ñèñòåìå õðàíèòñÿ â åå îáúåêòàõ, è âûïîëíèòü ñ íåé êàêîå-ëèáî äåéñòâèå ìîæíî, òîëüêî ïîñëàâ îáúåêòó(àì) çàïðîñ íà âûïîëíåíèå
ýòîãî äåéñòâèÿ. Ïîâåäåíèå è èíôîðìàöèÿ èíêàïñóëèðîâàíû â îáúåêòå. Îáúåêòû, òàêèì
îáðàçîì, îáåñïå÷èâàþò ñîêðûòèå èíôîðìàöèè.
Ïîíÿòèå îáúåêòà òåñíî ñâÿçàíî ñ ïîíÿòèåì àáñòðàêòíîãî òèïà äàííûõ. Àáñòðàêòíûé
òèï äàííûõ ýòî ìîäåëü (ñòðóêòóðà äàííûõ) ñ îïðåäåëåííûì íàáîðîì îïåðàöèé, âîçäåéñòâóþùèõ íà íåå. Ïðåèìóùåñòâà àáñòðàêòíûõ òèïîâ äàííûõ:
îíè ìîãóò áûòü èñïîëüçîâàíû íåçàâèñèìî îò èõ ðåàëèçàöèè (ìåõàíèçìà ñîêðûòèÿ èíôîðìàöèè),
AF
îíè ïðîñòû: èõ ïîëüçîâàòåëü íå ìîæåò áûòü âîâëå÷åí â èõ ëîãè÷åñêóþ ñòðóêòóðó, ïîñêîëüêó ìîæåò îïåðèðîâàòü ëèøü ñ èõ ñïåöèôèêàöèåé.
Ïðåèìóùåñòâà èñïîëüçîâàíèÿ îáúåêòîâ:
1. Äâîéíàÿ çàùèòà:
Âíóòðè îáúåêòà. Àòðèáóòû îáúåêòà ìîãóò áûòü èçìåíåíû òîëüêî âíóòðåííèìè ìåòîäàìè îáúåêòà. Ïîëüçîâàòåëþ íå íàäî çíàòü ðåàëèçàöèþ ýòèõ ìåòîäîâ.
Âíå îáúåêòà. Îáúåêò íå çíàåò ñâîåãî îêðóæåíèÿ è íå ìîæåò åãî ñëó÷àéíî ìîäèôèöèðîâàòü. Òîëüêî ñàì îáúåêò îòâå÷àåò çà ñâîå ïîâåäåíèå.
2. Ìîäóëüíîñòü: ïðèëîæåíèå ñîñòîèò èç îáúåêòîâ, îáìåíèâàþùèõñÿ ñîîáùåíèÿìè.
3. Ëåãêîñòü îòëàäêè è ñîïðîâîæäåíèÿ ÿâëÿåòñÿ ñëåäñòâèåì çàùèùåííîñòè è ìîäóëüíîñòè.
4. Ïîâòîðíàÿ èñïîëüçóåìîñòü: õîðîøèé îáúåêò íå çàâèñèò îò ñâîåãî îêðóæåíèÿ è ìîæåò áûòü áåç ïðîáëåì èñïîëüçîâàí íà äðóãîé àðõèòåêòóðå ïðîöåññîðà èëè â äðóãîé
çàäà÷å.
4.1.2. Êëàññû è ïðåäñòàâèòåëè
DR
Äëÿ îïèñàíèÿ îáúåêòîâ, èìåþùèõ îäèíàêîâîå ïîâåäåíèå è èíôîðìàöèîííóþ ñòðóêòóðó,
ââîäÿò ïîíÿòèå êëàññà îáúåêòîâ. Êëàññ ïðåäñòàâëÿåò ñîáîé øàáëîí äëÿ ñîçäàíèÿ îáúåêòîâ
è îïðåäåëÿåò âíóòðåííå óñòðîéñòâî ýòèõ îáúåêòîâ. Îáúåêòû îäíîãî êëàññà èìåþò îäèíàêîâîå îïðåäåëåíèå äëÿ ñâîèõ îïåðàöèé è èíôîðìàöèîííûõ ñòðóêòóð. Íå ñëåäóåò ïóòàòü êëàññ
îáúåêòà è åãî òèï. Òèï îïðåäåëÿåòñÿ íàáîðîì îïåðàöèé, êîòîðûå ñ íèì ìîæíî ïðîèçâîäèòü.
Êëàññ æå âêëþ÷àåò â ñåáÿ, ïîìèìî ýòîãî, åùå èíôîðìàöèîííóþ ñòðóêòóðó. Ïîýòîìó ìîæíî
ðàññìàòðèâàòü êëàññ êàê îäíó èç âîçìîæíûõ ðåàëèçàöèé òèïà.
 îáúåêòíî-îðèåíòèðîâàííûõ ñèñòåìàõ êàæäûé îáúåêò ïðèíàäëåæèò íåêîòîðîìó êëàññó. Îáúåêò, ïðèíàäëåæàùèé íåêîòîðîìó êëàññó, íàçûâàåòñÿ ïðåäñòàâèòåëåì ýòîãî êëàññà.
×àñòî òåðìèíû îáúåêò è ïðåäñòàâèòåëåì êëàññà èñïîëüçóþòñÿ êàê ñèíîíèìû. Òàêèì îáðàçîì, ïðåäñòàâèòåëü ýòî îáúåêò, ñîçäàííûé ïî êëàññó. Êëàññ îïèñûâàåò (ïîâåäåí÷åñêóþ
è èíôîðìàöèîííóþ) ñòðóêòóðó ïðåäñòàâèòåëÿ, à òåêóùåå ñîñòîÿíèå ïðåäñòàâèòåëÿ îïðåäåëÿåòñÿ îïåðàöèÿìè, âûïîëíÿåìûìè ñ íèì.
4.1.3. Ïîëèìîðôèçì
Äèíàìè÷åñêîå âçàèìîäåéñòâèå ïðåäñòàâèòåëåé, ñîçäàííûõ èç êëàññîâ, îïðåäåëÿåò ïîâåäåíèå ìîäåëè. Âçàèìîäåéñòâèå ïðåäñòàâèòåëåé îñóùåñòâëÿåòñÿ ïóòåì ïîñûëêè çàïðîñîâ ìåæäó íèìè. Åñëè ïðåäñòàâèòåëü ïîñûëàåò çàïðîñ è åìó íå âàæíî, ê êàêîìó êëàññó ïðèíàäëåæèò ïðåäñòàâèòåëüïîëó÷àòåëü, òî ýòî íàçûâàþò ïîëèìîðôèçìîì. Äðóãèìè ñëîâàìè,
ïîëèìîðôèçì îçíà÷àåò, ÷òî îòïðàâèòåëþ çàïðîñà íå òðåáóåòñÿ çíàòü êëàññ ïðåäñòàâèòåëÿ
ïîëó÷àòåëÿ; ïðåäñòàâèòåëüïîëó÷àòåëü ìîæåò ïðèíàäëåæàòü ëþáîìó êëàññó.
23
4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
4.1.4. Íàñëåäîâàíèå
T
Îäíàêî, îáû÷íî èñïîëüçóþò ïîíÿòèå îãðàíè÷åííîãî ïîëèìîðôèçìà, êîãäà íà âîçìîæíûå êëàññû ïðåäñòàâèòåëÿïîëó÷àòåëÿ íàêëàäûâàþò íåêîòîðûå îãðàíè÷åíèÿ.  êà÷åñòâå
òàêèõ îãðàíè÷åíèé îáû÷íî âûñòóïàþò òðåáîâàíèÿ íàñëåäîâàíèÿ (ñì. íèæå) îò íåêîòîðîãî
êëàññà.
Ïîëèìîðôèçì ïîçâîëÿåò äèíàìè÷åñêè èçìåíèòü óïðàâëÿåìûé îáúåêò áåç èçìåíåíèÿ ïîâåäåíèÿ óïðàâëÿþùåãî îáúåêòà. Íàïðèìåð, çàìåíà îáúåêòà ýëåêòðè÷åñêèé äâèãàòåëü íà
îáúåêò äâèãàòåëü âíóòðåííåãî ñãîðàíèÿ íå ïîâëèÿåò íà îáúåêò óïðàâëÿþùåå óñòðîéñòâî,
èñïîëüçóþùèé àáñòðàêòíûé îáúåêò äâèãàòåëü.
AF
Ïðè îïèñàíèè êëàññîâ ìîæíî çàìåòèòü, ÷òî ìíîãèå èç íèõ èìåþò îáùèå õàðàêòåðèñòèêè
(ïîâåäåí÷åñêèå è èíôîðìàöèîííûå ñòðóêòóðû). Ìû ìîæåì ñîáðàòü îáùèå õàðàêòåðèñòèêè
â îäèí ñïåöèàëüíûé êëàññ è ñäåëàòü îñòàëüíûå êëàññû åãî íàñëåäíèêàìè.  ýòîì ñëó÷àå
ïðè îïèñàíèè ýòèõ êëàññîâ ìû äîëæíû áóäåì ëèøü îïèñàòü äîáàâî÷íûå êîìïîíåíòû, ñïåöèôè÷íûå äëÿ êàæäîãî èç êëàññîâ. Ãîâîðÿò, ÷òî êëàññ B ÿâëÿåòñÿ íàñëåäíèêîì êëàññà
A , åñëè îïåðàöèè è èíôîðìàöèîííûå ñòðóêòóðû, îïèñàííûå â êëàññå A , ÿâëÿþòñÿ ÷àñòüþ
(ïîäìíîæåñòâîì) êëàññà B . Ïðè ýòîì êëàññ B íàçûâàþò ïîòîìêîì êëàññà A , à êëàññ A ïðåäêîì äëÿ êëàññà B . Åñëè êëàññ B ÿâëÿåòñÿ íåïîñðåäñòâåííûì ïîòîìêîì êëàññà A ,
òî åãî íàçûâàþò äî÷åðíèì, à êëàññ A ðîäèòåëüñêèì äëÿ êëàññà B .
Íàñëåäîâàíèå ïîçâîëÿåò ïîâòîðíî èñïîëüçîâàòü îáùèå îïèñàíèÿ. Ñ ïðîãðàììíîé òî÷êè
çðåíèÿ ýòî îçíà÷àåò âîçìîæíîñòü ïîâòîðíîãî èñïîëüçîâàíèÿ ñóùåñòâóþùåãî êîäà, ÷òî ÷àñòî
ðàññìàòðèâàåòñÿ êàê îñíîâíîå ïðåèìóùåñòâî îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà.
Ïðè íàñëåäîâàíèè ìû òàêæå èìååì åùå îäíî ïðåèìóùåñòâî. Åñëè ìû õîòèì èçìåíèòü
õàðàêòåðèñòèêè êëàññà ïðåäêà, òî ýòî íàäî ñäåëàòü òîëüêî â îäíîì ìåñòå â åãî îïèñàíèè.
Ïðè ýòîì ýòè èçìåíåíèÿ áóäóò àâòîìàòè÷åñêè âíåñåíû âî âñå åãî ïîòîìêè.
Ïðè íàñëåäîâàíèè íåêîòîðûå ïîâåäåí÷åñêèå è/èëè èíôîðìàöèîííûå ñòðóêòóðû ìîãóò ïåðåîïðåäåëÿòü ñîîòâåòñòâóþùèå ñòðóêòóðû ïðåäêà. Ïåðåîïðåäåëåíèÿ ÿâëÿåòñÿ äîñòàòî÷íî
ëåãêèì è ãèáêèì ñïîñîáîì ïîñòðîåíèÿ íîâûõ êëàññîâ, íî îíî çàòðóäíÿåò ïîíèìàíèå èåðàðõè÷åñêîé ñòðóêòóðû êëàññîâ, ïîñêîëüêó ïîòîìîê íàñëåäóåò òîëüêî ÷àñòü õàðàêòåðèñòèê ïðåäêà,
à äðóãóþ ÷àñòü ïåðåîïðåäåëÿåò.
Íàñëåäîâàíèå ìîæåò èñïîëüçîâàòüñÿ äëÿ ñëåäóþùèõ öåëåé.
DR
1. Ïîâòîðíîå èñïîëüçîâàíèå êîäà ñ ïîìîùüþ íàñëåäîâàíèÿ ìîæåò ïðîÿâëÿòüñÿ äâóìÿ
ïóòÿìè:
à) ó äâóõ êëàññîâ íàõîäèòñÿ îáùàÿ ÷àñòü, îíà âûäåëÿåòñÿ â àáñòðàêòíûé êëàññ, êîòîðûé íàñëåäóåòñÿ ýòèìè êëàññàìè;
á) íàõîäèòñÿ ïîäõîäÿùèé êëàññ â áèáëèîòåêå êëàññîâ è ñòðîèòñÿ åãî ïîòîìîê, îáëàäàþùèé íóæíûìè ñâîéñòâàìè.
2. Ïîñòðîåíèå ïîäòèïà. Åñëè ïîòîìêà êëàññà A ìîæíî èñïîëüçîâàòü âî âñåõ ìåñòàõ, ãäå
èñïîëüçîâàí êëàññ A , òî ãîâîðÿò, ÷òî êëàññû ïîâåäåí÷åñêè ñîâìåñòèìû, à ïîòîìîê
ïðåäñòàâëÿåò ïîäêëàññ êëàññà-ïðåäêà. Íà ïðàêòèêå ýòî îçíà÷àåò, ÷òî ïîòîìîê èìååò òîò
æå ïðîãðàììíûé èíòåðôåéñ, ÷òî è ïðåäîê. Ýòî îáû÷íî ïîëó÷àåòñÿ, åñëè íàñëåäîâàíèå
îáðàçîâàíî òîëüêî ðàñøèðåíèåì, à íå ïåðåîïðåäåëåíèåì, ñòðóêòóð â ïðåäêå, ïðè÷åì
ðàñøèðåíèå íå íàëîæèëî íèêàêèõ äîïîëíèòåëüíûõ îãðàíè÷åíèé íà ñòðóêòóðû ïðåäêà.
3. Ñïåöèàëèçàöèÿ êëàññà. Åñëè ïîòîìîê ìîäèôèöèðîâàí ïðè íàñëåäîâàíèè òàê, ÷òî
îí áîëåå íå ÿâëÿåòñÿ ïîâåäåí÷åñêè ñîâìåñòèìûì ñ ïðåäêîì, òî ãîâîðÿò, ÷òî êëàññ áûë
ñïåöèàëèçèðîâàí. Îáû÷íî ýòî îçíà÷àåò, ÷òî ÷àñòü îïåðàöèé è/èëè èíôîðìàöèîííûõ
ñòðóêòóð, áûëà ïåðåîïðåäåëåíà èëè óäàëåíà.
4. Êîíöåïòóàëüíàÿ. Èñïîëüçîâàíèå èäåè íàñëåäîâàíèÿ ïðîÿâëÿåò ïðè÷èííî-ñëåäñòâåííûå ñâÿçè è ÿâëÿåòñÿ èíòóèòèâíî ïîíÿòíîé.
24
4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ ÎÑÐÂ
T
4.2. Êëàññè÷åñêèé è îáúåêòíî-îðèåíòèðîâàííûé ïîäõîäû ê ïîñòðîåíèþ ÎÑÐÂ
 ñèëó ïðåèìóùåñòâ îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ïðèëîæåíèÿ ñîçäàþòñÿ íà åãî
îñíîâå, èñïîëüçóÿ òîò èëè èíîé ÿçûê ïðîãðàììèðîâàíèÿ, íàèëó÷øèì îáðàçîì ïîääåðæèâàþùèé ýòîò ïîäõîä. Àðõèòåêòóðû æå êëàññè÷åñêèõ îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
îñíîâàíû íà àðõèòåêòóðàõ UNIX ñèñòåì è èñïîëüçóþò òðàäèöèîííûé ïðîöåäóðíûé ïîäõîä ê
ïðîãðàììèðîâàíèþ. Ñî÷åòàíèå îáúåêòíî-îðèåíòèðîâàííûõ ïðèëîæåíèé è ïðîöåäóðíûõ îïåðàöèîííûõ ñèñòåì èìååò ðÿä íåäîñòàòêîâ.
AF
1. Ïðîèñõîäèò ðàçðûâ ïàðàäèãìû ïðîãðàììèðîâàíèÿ: â åäèíîì ðàáîòàþùåì êîìïëåêñå
(ïðèëîæåíèå + ÎÑÐÂ) ðàçíûå êîìïîíåíòû èñïîëüçóþò ðàçíûå ïîäõîäû ê ðàçðàáîòêå
ïðîãðàììíîãî îáåñïå÷åíèÿ.
2. Íå èñïîëüçóþòñÿ âñå âîçìîæíîñòè îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà.
3. Âîçíèêàþò íåêîòîðûå ïîòåðè ïðîèçâîäèòåëüíîñòè èç-çà ðàçíîãî òèïà èíòåðôåéñîâ â
ÎÑÐÂ è ïðèëîæåíèè.
Åñòåñòâåííî âîçíèêàåò èäåÿ ñòðîèòü ñàìó ÎÑÐÂ, èñïîëüçóÿ îáúåêòíî-îðèåíòèðîâàííûé
ïîäõîä. Ïðè ýòîì
êàê ïðèëîæåíèå, òàê è îïåðàöèîííàÿ ñèñòåìà ïîëíîñòüþ îáúåêòíî-îðèåíòèðîâàíû è
èñïîëüçóþò âñå ïðåèìóùåñòâà ýòîãî ïîäõîäà;
ïðèëîæåíèå è ÎÑÐÂ ìîãóò áûòü ïîëíîñòüþ èíòåãðèðîâàíû, ïîñêîëüêó èñïîëüçóþò îäèí
îáúåêòíî-îðèåíòèðîâàííûé ÿçûê ïðîãðàììèðîâàíèÿ;
îáåñïå÷èâàåòñÿ ñîãëàñîâàíèå èíòåðôåéñîâ ÎÑРè ïðèëîæåíèÿ;
ïðèëîæåíèå ìîæåò ìîäåëèðîâàòü ÎÑÐÂ äëÿ ñâîèõ ïîòðåáíîñòåé, çàêàçûâàÿ íóæíûå
åìó îáúåêòû;
åäèíûé êîìïëåêñ ïðèëîæåíèå
+ ÎÑÐÂ ÿâëÿåòñÿ ìîäóëüíûì è ëåãêî ìîäåðíèçèðóåìûì.
DR
Èäåÿ ðåàëèçîâàíà â ÎÑÐÂ SoftKernel, öåëèêîì íàïèñàííîé íà C++.
4.3. Ìîíîëèòíàÿ àðõèòåêòóðà
ÎÑÐÂ ñ ìîíîëèòíîé àðõèòåêòóðîé ìîæíî ïðåäñòàâèòü â âèäå
ïðèêëàäíîãî óðîâíÿ: ñîñòîèò èç ðàáîòàþùèõ ïðèêëàäíûõ ïðîöåññîâ;
ñèñòåìíîãî óðîâíÿ: ñîñòîèò èç ìîíîëèòíîãî ÿäðà îïåðàöèîííîé ñèñòåìû, â êîòîðîì
ìîæíî âûäåëèòü ñëåäóþùèå ÷àñòè:
èíòåðôåéñ ìåæäó ïðèëîæåíèÿìè è ÿäðîì (API),
ñîáñòâåííî ÿäðî ñèñòåìû,
èíòåðôåéñ ìåæäó ÿäðîì è îáîðóäîâàíèåì (äðàéâåðû óñòðîéñòâ).
API â òàêèõ ñèñòåìàõ èãðàåò äâîéíóþ ðîëü:
1. óïðàâëåíèå âçàèìîäåéñòâèåì ïðèêëàäíûõ ïðîöåññîâ è ñèñòåìû,
2. îáåñïå÷åíèå íåïðåðûâíîñòè âûïîëíåíèÿ êîäà ñèñòåìû (ò.å. îòñóòñòâèå ïåðåêëþ÷åíèÿ
çàäà÷ âî âðåìÿ èñïîëíåíèÿ êîäà ñèñòåìû).
Îñíîâíûì ïðåèìóùåñòâîì ìîíîëèòíîé àðõèòåêòóðû ÿâëÿåòñÿ åå îòíîñèòåëüíàÿ áûñòðîòà
ðàáîòû ïî ñðàâíåíèþ ñ äðóãèìè àðõèòåêòóðàìè. Îäíàêî, äîñòèãàåòñÿ ýòî, â-îñíîâíîì, çà ñ÷åò
íàïèñàíèÿ çíà÷èòåëüíûõ ÷àñòåé ñèñòåìû íà àññåìáëåðå.
Íåäîñòàòêè ìîíîëèòíîé àðõèòåêòóðû.
25
4. Òèïû àðõèòåêòóð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
T
1. Ñèñòåìíûå âûçîâû, òðåáóþùèå ïåðåêëþ÷åíèÿ óðîâíåé ïðèâèëåãèé (îò ïîëüçîâàòåëüñêîé çàäà÷è ê ÿäðó), äîëæíû áûòü ðåàëèçîâàíû API êàê ïðåðûâàíèÿ èëè ëîâóøêè
(ñïåöèàëüíûé òèï èñêëþ÷åíèé). Ýòî ñèëüíî óâåëè÷èâàåò âðåìÿ èõ ðàáîòû.
2. ßäðî íå ìîæåò áûòü ïðåðâàíî ïîëüçîâàòåëüñêîé çàäà÷åé (non-preemptable). Ýòî ìîæåò ïðèâîäèòü ê òîìó, ÷òî âûñîêîïðèîðèòåòíàÿ çàäà÷à ìîæåò íå ïîëó÷èòü óïðàâëåíèÿ
èç-çà ðàáîòû íèçêîïðèîðèòåòíîé. Íàïðèìåð, íèçêîïðèîðèòåòíàÿ çàäà÷à çàïðîñèëà âûäåëåíèå ïàìÿòè, ñäåëàëà ñèñòåìíûé âûçîâ, äî îêîí÷àíèÿ êîòîðîãî ñèãíàë àêòèâèçàöèè
âûñîêîïðèîðèòåòíîé çàäà÷è íå ñìîæåò åå àêòèâèçèðîâàòü.
AF
3. Ñëîæíîñòü ïåðåíîñà íà íîâûå àðõèòåêòóðû ïðîöåññîðà èç-çà çíà÷èòåëüíûõ àññåìáëåðíûõ âñòàâîê.
4. Íåãèáêîñòü è ñëîæíîñòü ðàçâèòèÿ: èçìåíåíèå ÷àñòè ÿäðà ñèñòåìû òðåáóåò åãî ïîëíîé
ïåðåêîìïèëÿöèè.
4.4. Ìîäóëüíàÿ àðõèòåêòóðà (íà îñíîâå ìèêðîÿäðà)
Ìîäóëüíàÿ àðõèòåêòóðà ïîÿâèëàñü êàê ïîïûòêà óáðàòü óçêîå ìåñòî API è îáëåã÷èòü
ìîäåðíèçàöèþ ñèñòåìû è ïåðåíîñ åå íà íîâûå ïðîöåññîðû.
API â ìîäóëüíîé àðõèòåêòóðå èãðàåò òîëüêî îäíó ðîëü: îáåñïå÷èâàåò ñâÿçü ïðèêëàäíûõ
ïðîöåññîâ è ñïåöèàëüíîãî ìîäóëÿ ìåíåäæåðà ïðîöåññîâ. Îäíàêî, òåïåðü ìèêðîÿäðî èãðàåò
äâîéíóþ ðîëü:
1. óïðàâëåíèå âçàèìîäåéñòâèåì ÷àñòåé ñèñòåìû (íàïðèìåð, ìåíåäæåðîâ ïðîöåññîâ è ôàéëîâ),
2. îáåñïå÷åíèå íåïðåðûâíîñòè âûïîëíåíèÿ êîäà ñèñòåìû (ò.å. îòñóòñòâèå ïåðåêëþ÷åíèÿ
çàäà÷ âî âðåìÿ èñïîëíåíèÿ ìèêðîÿäðà).
DR
Íåäîñòàòêè ìîäóëüíîé àðõèòåêòóðû ôàêòè÷åñêè òå æå, ÷òî è ó ìîíîëèòíîé. Ïðîáëåìû
ïåðåøëè ñ óðîâíÿ API íà óðîâåíü ìèêðîÿäðà. Ñèñòåìíûé èíòåðôåéñ ïî-ïðåæíåìó íå äîïóñêàåò ïåðåêëþ÷åíèÿ çàäà÷ âî âðåìÿ ðàáîòû ìèêðîÿäðà, òîëüêî ñîêðàòèëîñü âðåìÿ ïðåáûâàíèÿ
â ýòîì ñîñòîÿíèè. API ïî-ïðåæíåìó ìîæåò áûòü ðåàëèçîâàí òîëüêî íà àññåìáëåðå, ïðîáëåìû
ñ ïåðåíîñèìîñòüþ ìèêðîÿäðà óìåíüøèëèñü (â ñâÿçè ñ ñîêðàùåíèåì åãî ðàçìåðà), íî îñòàëèñü.
4.5. Îáúåêòíàÿ àðõèòåêòóðà íà îñíîâå îáúåêòîâ-ìèêðîÿäåð
 ýòîé àðõèòåêòóðå (èñïîëüçóåìîé â ÎÑРSoftKernel) API îòñóòñòâóåò âîîáùå. Âçàèìîäåéñòâèå ìåæäó êîìïîíåíòàìè ñèñòåìû (ìèêðîÿäðàìè) è ïîëüçîâàòåëüñêèìè ïðîöåññàìè
îñóùåñòâëÿåòñÿ ïîñðåäñòâîì îáû÷íîãî âûçîâà ôóíêöèé, ïîñêîëüêó è ñèñòåìà, è ïðèëîæåíèÿ íàïèñàíû íà îäíîì ÿçûêå (C++). Ýòî îáåñïå÷èâàåò ìàêñèìàëüíóþ ñêîðîñòü ñèñòåìíûõ
âûçîâîâ.
Ôàêòè÷åñêîå ðàâíîïðàâèå âñåõ êîìïîíåíò ñèñòåìû îáåñïå÷èâàåò âîçìîæíîñòü ïåðåêëþ÷åíèÿ çàäà÷ â ëþáîå âðåìÿ, ò.å. ñèñòåìà ïîëíîñòüþ preemptible.
Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä îáåñïå÷èâàåò ìîäóëüíîñòü, áåçîïàñíîñòü, ëåãêîñòü ìîäåðíèçàöèè è ïîâòîðíîãî èñïîëüçîâàíèÿ êîäà.
Ðîëü API èãðàåò êîìïèëÿòîð è äèíàìè÷åñêèé ðåäàêòîð îáúåêòíûõ ñâÿçåé (linker). Ïðè
ñòàðòå ïðèëîæåíèÿ äèíàìè÷åñêèé linker çàãðóæàåò íóæíûå åìó ìèêðîÿäðà (ò.å., â îòëè÷èå
îò ïðåäûäóùèõ ñèñòåì, íå âñå êîìïîíåíòû ñàìîé îïåðàöèîííîé ñèñòåìû äîëæíû áûòü çàãðóæåíû â îïåðàòèâíóþ ïàìÿòü). Åñëè ìèêðîÿäðî óæå çàãðóæåíî äëÿ äðóãîãî ïðèëîæåíèÿ,
òî îíî ïîâòîðíî íå çàãðóæàåòñÿ, à èñïîëüçóåòñÿ êîä è äàííûå óæå èìåþùåãîñÿ ìèêðîÿäðà.
Âñå ýòè ïðèåìû ïîçâîëÿþò ñîêðàòèòü îáúåì òðåáóåìîé ïàìÿòè.
Ïîñêîëüêó ðàçíûå ïðèëîæåíèÿ ðàçäåëÿþò îäíè ìèêðîÿäðà, òî îíè äîëæíû ðàáîòàòü â
îäíîì àäðåñíîì ïðîñòðàíñòâå. Ñëåäîâàòåëüíî, ñèñòåìà íå ìîæåò èñïîëüçîâàòü âèðòóàëüíóþ
26
4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè
Ìèêðîÿäðà è ìîäóëè. Ìíîãèå ÎÑ ïîääåðæèâàþò äèíàìè÷åñêóþ çàãðóçêó êîìïîíåíò ñèñòåìû, íàçûâàåìûõ ìîäóëÿìè. Îäíàêî, ìîäóëè íå ïîääåðæèâàþò îáúåêòíîîðèåíòèðîâàííûé ïîäõîä (íàïîìíèì, ìèêðîÿäðî ÿâëÿåòñÿ ôàêòè÷åñêè ïðåäñòàâèòåëåì
íåêîòîðîãî êëàññà). Äàëåå, îáìåí èíôîðìàöèåé ñ ìîäóëÿìè ïðîèñõîäèò ïîñðåäñòâîì
ñèñòåìíûõ âûçîâîâ, ÷òî äîñòàòî÷íî äîðîãî.
AF
T
ïàìÿòü è òåì ñàìûì ðàáîòàåò áûñòðåå (òàê êàê èñêëþ÷àþòñÿ çàäåðæêè íà òðàíñëÿöèþ âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé).
Ïîñêîëüêó âñå ïðèëîæåíèÿ è ñàìè ìèêðîÿäðà ðàáîòàþò â îäíîì àäðåñíîì ïðîñòðàíñòâå,
òî îíè çàãðóæàþòñÿ â ïàìÿòü, íà÷èíàÿ ñ íåèçâåñòíîãî íà ìîìåíò êîìïèëÿöèè àäðåñà. Ñëåäîâàòåëüíî, ïðèëîæåíèÿ è ìèêðîÿäðà íå äîëæíû çàâèñåòü îò íà÷àëüíîãî àäðåñà (êàê ïî
êîäó, òàê è ïî äàííûì (ïîñëåäíåå îáåñïå÷èòü çíà÷èòåëüíî ñëîæíåå)). Ýòî ñâîéñòâî àâòîìàòè÷åñêè îáåñïå÷èâàåò âîçìîæíîñòü çàïèñè ïðèëîæåíèé è ìîäóëåé â ÏÇÓ, ñ ïîñëåäóþùèì èõ
èñïîëíåíèåì êàê â ñàìîì ÏÇÓ, òàê è â îïåðàòèâíîé ïàìÿòè.
Ìèêðîÿäðà ïî ñâîèì õàðàêòåðèñòèêàì íàïîìèíàþò ñòðóêòóðû, èñïîëüçóåìûå â äðóãèõ
îïåðàöèîííûõ ñèñòåìàõ, îäíàêî åñòü è ñâîè ðàçëè÷èÿ.
Ìèêðîÿäðà è äðàéâåðû.
Ìèêðîÿäðà è DLL
Ìíîãèå ÎÑ ïîääåðæèâàþò âîçìîæíîñòü ñâîåãî ðàñøèðåíèÿ
ïîñðåäñòâîì äðàéâåðîâ (ñïåöèàëüíûõ ìîäóëåé, îáû÷íî ñëóæàùèõ äëÿ ïîääåðæêè îáîðóäîâàíèÿ). Îäíàêî, äðàéâåðû ÷àñòî äîëæíû áûòü ñòàòè÷åñêè ñâÿçàíû ñ ÿäðîì (ò.å.
îáðàçîâûâàòü ñ íèì ñâÿçàííûé çàãðóçî÷íûé îáðàç åùå äî çàãðóçêè) è äîëæíû ðàáîòàòü â ïðèâèëåãèðîâàííîì (ñóïåðïîëüçîâàòåëüñêîì) ðåæèìå. Äàëåå, êàê è ìîäóëè îíè
íå ïîääåðæèâàþò îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä è äîñòóïíû ïðèëîæåíèÿì òîëüêî
ïîñðåäñòâîì ñèñòåìíûõ âûçîâîâ.
(Dynamically Linked Libraries, äèíàìè÷åñêè ñâÿçûâàåìûå áèáëèîòåêè). Ìíîãèå ñèñòåìû îôîðìëÿþò áèáëèîòåêè, èç êîòîðûõ áåðóòñÿ ôóíêöèè ïðè äèíàìè÷åñêîì ñâÿçûâàíèè, â âèäå ñïåöèàëüíûõ ìîäóëåé, íàçûâàåìûõ DLL. DLL îáåñïå÷èâàåò ðàçäåëåíèå ñâîåãî êîäà è äàííûõ äëÿ âñåõ ðàáîòàþùèõ ïðèëîæåíèé, â òî âðåìÿ,
êàê äëÿ ìèêðîÿäåð ìîæíî óïðàâëÿòü äîñòóïîì äëÿ êàæäîãî êîíêðåòíîãî ïðèëîæåíèÿ. DLL íå ïîääåðæèâàåò îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä, êîä DLL íå ÿâëÿåòñÿ
ïîçèöèîííî-íåçàâèñèìûì, è ïîòîìó íå ìîæåò áûòü çàïèñàí â ÏÇÓ.
DR
4.6. Ñòðîåíèå ñèñòåì ðåàëüíîãî âðåìåíè
Ñèñòåìó ðåàëüíîãî âðåìåíè ìîæíî ðàçäåëèòü êàê áû íà òðè ñëîÿ:
1. ßäðî ñîäåðæèò òîëüêî ñòðîãèé ìèíèìóì, íåîáõîäèìûé äëÿ ðàáîòû ñèñòåìû: óïðàâëåíèå çàäà÷àìè, èõ ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå, óïðàâëåíèå ïàìÿòüþ è óñòðîéñòâàìè ââîäà/âûâîäà; ðàçìåð ÿäðà î÷åíü îãðàíè÷åí: ÷àñòî íåñêîëüêî êèëîáàéòîâ.
2. Ñèñòåìà óïðàâëåíèÿ ñîäåðæèò ÿäðî è ðÿä äîïîëíèòåëüíûõ ñåðâèñîâ, ðàñøèðÿþùèõ åãî âîçìîæíîñòè: ðàñøèðåííîå óïðàâëåíèå ïàìÿòüþ, ââîäîì/âûâîäîì, çàäà÷àìè, ôàéëàìè è ò.ä., îáåñïå÷èâàåò òàêæå âçàèìîäåéñòâèå ñèñòåìû è óïðàâëÿþùåãî/óïðàâëÿåìîãî îáîðóäîâàíèÿ.
3. Ñèñòåìà ðåàëüíîãî âðåìåíè ñîäåðæèò ñèñòåìó óïðàâëåíèÿ è íàáîð óòèëèò: ñðåäñòâà ðàçðàáîòêè (êîìïèëÿòîðû, îòëàä÷èêè è ò.ä.), ñðåäñòâà âèçóàëèçàöèè (âçàèìîäåéñòâèÿ ÷åëîâåêà è îïåðàöèîííîé ñèñòåìû).
Êðèòåðèè âûáîðà ÎÑÐÂ:
ïðîèçâîäèòåëüíîñòü,
íàäåæíîñòü, êðóãëîñóòî÷íàÿ ãîòîâíîñòü,
ïîääåðæêà ðàçëè÷íûõ òèïîâ ïðîöåññîðîâ,
27
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
ïîääåðæêà ìíîãîïðîöåññîðíîñòè,
íàëè÷èå ñðåäñòâ ðàçðàáîòêè íà òðåáóåìîì ÿçûêå,
íàëè÷èå ìåõàíèçìîâ ðåàëüíîãî âðåìåíè,
ïîääåðæêà ôàéëîâîé ñèñòåìû.
Ðîëü óïðàâëÿþùåé ñèñòåìû ÎÑÐÂ:
óïðàâëÿåò âçàèìíûì èñêëþ÷åíèåì è âçàèìîäåéñòâèåì çàäà÷ äëÿ îïòèìèçàöèè âðåìåíè èñïîëüçîâàíèÿ ïðîöåññîðà; óïðàâëåíèå îñíîâûâàåòñÿ íà âåäóùèõñÿ ÎÑРòàáëèöàõ
äåñêðèïòîðîâ çàäà÷;
ïðåäîñòàâëÿåò ïðèëîæåíèþ îñíîâíûå âîçìîæíîñòè ïî óïðàâëåíèþ âðåìåíåì, ïåðèôåðèéíûìè óñòðîéñòâàìè, âçàèìîäåéñòâèþ ñ îïåðàòîðîì;
AF
T
ïðåäîñòàâëÿåò íàáîð áèáëèîòå÷íûõ ôóíêöèé äëÿ óäîáíîãî äîñòóïà ê âîçìîæíîñòÿì
ñèñòåìû, íàïðèìåð, ïî÷òîâûå ÿùèêè, ñåìàôîðû è ò.ä.
çàíèìàåòñÿ ïëàíèðîâàíèåì çàäà÷.
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
Äîñòóï ïðîöåññîâ (çàäà÷) ê ðàçëè÷íûì ðåñóðñàì (îñîáåííî ðàçäåëÿåìûì) â ìíîãîçàäà÷íûõ ñèñòåìàõ òðåáóåò ñèíõðîíèçàöèè äåéñòâèé ýòèõ ïðîöåññîâ (çàäà÷). Ñïîñîáû îñóùåñòâëåíèÿ âçàèìîäåéñòâèÿ ïîäðàçäåëÿþò íà:
áåçîïàñíîå âçàèìîäåéñòâèå,
íåáåçîïàñíîå âçàèìîäåéñòâèå,
êîãäà îáìåí äàííûìè îñóùåñòâëÿåòñÿ ïîñðåäñòâîì
îáúåêòîâ âçàèìîäåéñòâèÿ, ïðåäîñòàâëÿåìûõ ñèñòåìîé; ïðè ýòîì öåëîñòíîñòü èíôîðìàöèè è íåäåëèìîñòü îïåðàöèé ñ íåþ (ò.å. îòñóòñòâèå íåæåëàòåëüíîãî ïåðåêëþ÷åíèÿ
çàäà÷) íåÿâíî îáåñïå÷èâàþòñÿ ñèñòåìîé; ïðèìåðàìè òàêèõ îáúåêòîâ âçàèìîäåéñòâèÿ
ÿâëÿþòñÿ ñåìàôîðû, ñèãíàëû è ïî÷òîâûå ÿùèêè;
DR
êîãäà îáìåí äàííûìè îñóùåñòâëÿåòñÿ ïîñðåäñòâîì
ðàçäåëÿåìûõ ðåñóðñîâ (íàïðèìåð, îáùèõ ïåðåìåííûõ), íå çàâèñèìûõ îò ñèñòåìíûõ
îáúåêòîâ âçàèìîäåéñòâèÿ; ïðè ýòîì öåëîñòíîñòü èíôîðìàöèè è íåäåëèìîñòü ÿâíî îáåñïå÷èâàåòñÿ ñàìèì ïðèëîæåíèåì (â ïîäàâëÿþùåì áîëüøèíñòâå ñëó÷àåâ ïîñðåäñòâîì
òîãî èëè èíîãî ñèñòåìíîãî îáúåêòà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ).
Ïîñêîëüêó äëÿ ëþáîãî òèïà âçàèìîäåéñòâèÿ òðåáóþòñÿ ñèñòåìíûå îáúåêòû ñèíõðîíèçàöèè,
òî âñå èìåþùèåñÿ ÎÑÐÂ ïðåäîñòàâëÿþò ïðèëîæåíèÿì íåêîòîðûé íàáîð òàêèõ îáúåêòîâ.
Íèæå ìû ðàññìîòðèì ñàìûå ðàñïðîñòðàíåííûå èç íèõ.
5.1. Ñåìàôîðû
Îïðåäåëåíèå. Ñåìàôîð ýòî îáúåêò ñèíõðîíèçàöèè, çàäàþùèé êîëè÷åñòâî ïîëüçîâàòåëåé (çàäà÷, ïðîöåññîâ), èìåþùèõ îäíîâðåìåííûé äîñòóï ê íåêîòîðîìó ðåñóðñó. Ñ êàæäûì
ñåìàôîðîì ñâÿçàíû ñ÷åò÷èê (çíà÷åíèå ñåìàôîðà) è î÷åðåäü îæèäàíèÿ (ïðîöåññîâ, çàäà÷,
îæèäàþùèõ ïðèíÿòèå ñ÷åò÷èêîì îïðåäåëåííîãî çíà÷åíèÿ). Ðàçëè÷àþò:
28
äâîè÷íûå (áóëåâñêèå) ñåìàôîðû
ñ÷åòíûå ñåìàôîðû
ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû
êðèòè÷íîãî ðàçäåëÿåìîãî ðåñóðñà; íà÷àëüíîå çíà÷åíèå ñ÷åò÷èêà òàêîãî ñåìàôîðà ðàâíî
1;
ýòî ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ äëÿ çàùèòû ðåñóðñà, êîòîðûé
ìîæåò áûòü îäíîâðåìåííî èñïîëüçîâàí íå áîëåå, ÷åì îãðàíè÷åííûì ôèêñèðîâàííûì
÷èñëîì çàäà÷ n ; íà÷àëüíîå çíà÷åíèå ñ÷åò÷èêà òàêîãî ñåìàôîðà ðàâíî n .
5.1. Ñåìàôîðû
= 1 äëÿ áóëåâñêèõ
âçÿòü k åäèíèö èç ñåìàôîðà, ò.å. óìåíüøèòü ñ÷åò÷èê íà k (åñëè â ñ÷åò÷èêå íåò k
åäèíèö, òî ýòà îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ íàëè÷èÿ êàê ìèíèìóì
k åäèíèö â ñåìàôîðå, è äîáàâëÿåò åå â êîíåö î÷åðåäè îæèäàíèÿ ýòîãî ñåìàôîðà);
âåðíóòü k åäèíèö â ñåìàôîð, ò.å. óâåëè÷èòü ñ÷åò÷èê íà k (åñëè ñåìàôîð îæèäàåòñÿ
äðóãîé çàäà÷åé è åé òðåáóåòñÿ íå áîëåå, ÷åì íîâîå òåêóùåå çíà÷åíèå ñ÷åò÷èêà åäèíèö,
òî îíà ìîæåò áûòü àêòèâèçèðîâàíà, óäàëåíà èç î÷åðåäè îæèäàíèÿ è ìîæåò âûòåñíèòü
òåêóùóþ çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå);
ïîïðîáîâàòü âçÿòü k åäèíèö èç ñåìàôîðà (åñëè â ñ÷åò÷èêå k åäèíèö, òî âçÿòü k åäèíèö èç åãî, èíà÷å âåðíóòü ïðèçíàê çàíÿòîñòè ñåìàôîðà áåç ïåðåâîäà çàäà÷è â ñîñòîÿíèå
îæèäàíèÿ);
AF
k
T
Íàä ñåìàôîðàìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè (íèæå
ñåìàôîðîâ)
ïðîâåðèòü ñåìàôîð, ò.å. ïîëó÷èòü çíà÷åíèå ñ÷åò÷èêà;
áëîêèðîâàòü ñåìàôîð, ò.å. âçÿòü èç íåãî ñòîëüêî åäèíèö, ñêîëüêî â íåì åñòü (ïðè ýòîì
èíîãäà áûâàþò äâå ðàçíîâèäíîñòè ýòîé îïåðàöèè: âçÿòü ñòîëüêî, ñêîëüêî åñòü â äàííûé
ìîìåíò, èëè âçÿòü ñòîëüêî, ñêîëüêî åñòü â íà÷àëüíûé ìîìåíò, ò.å. ìàêñèìàëüíî âîçìîæíîå êîëè÷åñòâî, èìåííî ïîñëåäíåå îáû÷íî íàçûâàþò áëîêèðîâêîé, ïîñêîëüêó òàêàÿ
çàäà÷à áóäåò ìîíîïîëüíî âëàäåòü ðåñóðñîì);
ðàçáëîêèðîâàòü ñåìàôîð, ò.å. âåðíóòü ñòîëüêî åäèíèö, ñêîëüêî âñåãî áûëî âçÿòî äàííîé
çàäà÷åé ïî êîìàíäå áëîêèðîâàòü.
Ëîãè÷åñêàÿ ñòðóêòóðà äâîè÷íûõ ñåìàôîðîâ îñîáåííî ïðîñòà. Ñ÷åò÷èê ñåìàôîðà s èíèöèàëèçèðóåòñÿ 1 ïðè ñîçäàíèè. Äëÿ äîñòóïà ê íåìó îïðåäåëåíû äâå ïðèìèòèâíûå îïåðàöèè:
Get(s) âçÿòü (èëè çàêðûòü) ñåìàôîð s , ò.å. çàïðîñèòü ðåñóðñ; ýòà îïåðàöèÿ âû÷èòàåò
èç ñ÷åò÷èêà 1;
P ut(s) âåðíóòü (èëè îòêðûòü) ñåìàôîð, ò.å. îñâîáîäèòü ðåñóðñ; ýòà îïåðàöèÿ ïðèáàâëÿåò ê ñ÷åò÷èêó 1.
DR
Ýòè îïåðàöèè íåäåëèìû, ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî. Â
ïðîöåññå ðàáîòû ñîñòîÿíèå ñ÷åò÷èêà ìîæåò áûòü:
1 ðåñóðñ ñâîáîäåí,
0 ðåñóðñ çàíÿò, î÷åðåäü îæèäàíèÿ ïóñòà,
0 ðåñóðñ çàíÿò, â î÷åðåäè îæèäàíèÿ íàõîäÿòñÿ j j çàäà÷.
m <
m
Ðàññìîòðèì ïðèìåð.
1.
A:Get
çàäà÷à
A
çàâëàäåëà ðåñóðñîì,
2.
C:Get çàäà÷à C çàïðîñèëà ðåñóðñ, êîòîðûé çàíÿò, ñëåäîâàòåëüíî, çàäà÷à
ðîâàíà è ïîìåùåíà â î÷åðåäü îæèäàíèÿ,
C
çàáëîêè-
3.
B:Get çàäà÷à B çàïðîñèëà ðåñóðñ, êîòîðûé çàíÿò, ñëåäîâàòåëüíî, çàäà÷à
ðîâàíà è ïîìåùåíà â î÷åðåäü îæèäàíèÿ,
B
çàáëîêè-
4.
A:P ut çàäà÷à A îñâîáîäèëà ðåñóðñ, êîòîðûé áûë ïåðåäàí ïåðâîé çàäà÷å â î÷åðåäè
îæèäàíèÿ, ò.å. C (êîòîðàÿ â ñâîþ î÷åðåäü àêòèâèçèðîâàíà),
5.
C:P ut çàäà÷à C îñâîáîäèëà ðåñóðñ, êîòîðûé áûë ïåðåäàí ïåðâîé çàäà÷å â î÷åðåäè
îæèäàíèÿ, ò.å. B (êîòîðàÿ â ñâîþ î÷åðåäü àêòèâèçèðîâàíà),
29
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
B:P ut çàäà÷à
âûçîâåò Get .
B
îñâîáîäèëà ðåñóðñ, êîòîðûé áóäåò ïåðåäàí ïåðâîé çàäà÷å, êîòîðàÿ
T
6.
AF
Èíîãäà ðàññìàòðèâàþò ëè÷íûå èëè ïðèâàòíûå ñåìàôîðû. Òàêîé ñåìàôîð ñîçäàåòñÿ
çàäà÷åé T ñðàçó â çàêðûòîì ñîñòîÿíèè. Ïðè ýòîì çàäà÷à T èìååò ïðàâî âûçûâàòü òîëüêî
ôóíêöèþ Get , à âñå îñòàëüíûå çàäà÷è òîëüêî ôóíêöèþ P ut . Ñ ïîìîùüþ òàêèõ ñåìàôîðîâ
ëåãêî îðãàíèçîâàòü îáìåí ìåæäó çàäà÷àìè ïî òèïó êëèåíò ñåðâåð. Çàäà÷à T1 (ñåðâåð) ñðàçó ïîñëå ñòàðòà ñîçäàåò ëè÷íûé ñåìàôîð S1 è âûçûâàåò ôóíêöèþ S1 :Get() . Òåì ñàìûì îíà
áëîêèðóåòñÿ äî îñâîáîæäåíèÿ ñåìàôîðà S1 . Çàäà÷à T2 (êëèåíò) ñðàçó ïîñëå ñòàðòà ñîçäàåò
ëè÷íûé ñåìàôîð S2 , ïîäãîòàâëèâàåò äàííûå â ðàçäåëÿåìîé ñ çàäà÷åé T1 ïàìÿòè è âûçûâàåò
ôóíêöèþ S1 :P ut() . Ýòî ïðèâîäèò ê àêòèâèçàöèè çàäà÷è T1 . Çàäà÷à T2 ïðîäîëæàåò ðàáîòó è âûçûâàåò ôóíêöèþ S2 :Get() , áëîêèðóÿñü äî îñâîáîæäåíèÿ ñåìàôîðà S2 . Çàäà÷à T1
(ñåðâåð) ïî îêîí÷àíèè îáðàáîòêè äàííûõ âûçûâàåò ôóíêöèè S2 :P ut() , S1 :Get() , àêòèâèçèðóÿ çàäà÷ó T2 (êëèåíòà) è áëîêèðóÿ ñåáÿ. Íèæå ìû ðàññìîòðèì äðóãèå ñïîñîáû ðåàëèçàöèè
âçàèìîäåéñòâèÿ êëèåíò ñåðâåð.
5.2. Ñîáûòèÿ
Îïðåäåëåíèå. Ñîáûòèå ýòî ëîãè÷åñêèé ñèãíàë (îïîâåùåíèå), ïðèõîäÿùèé àñèíõðîííî ïî îòíîøåíèþ ê òå÷åíèþ ïðîöåññà. Ñ êàæäûì ñîáûòèåì ñâÿçàíû áóëåâñêàÿ ïåðåìåííàÿ
E , ïðèíèìàþùàÿ äâà çíà÷åíèÿ 0 ñîáûòèå íå ïðèøëî, è 1 ñîáûòèå ïðèøëî, è î÷åðåäü
îæèäàíèÿ (ïðîöåññîâ, çàäà÷, îæèäàþùèõ ïðèõîäà ñîáûòèÿ). Íàä ñîáûòèÿìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè:
S end(E ) ïîñëàòü ñîáûòèå, ò.å. óñòàíîâèòü ïåðåìåííóþ E â 1 (ïî òðàäèöèè UNIX
ñèñòåì ýòó ôóíêöèþ îáû÷íî íàçûâàþò K ill , ïîñêîëüêó ñðåäè ñîáûòèé îïðåäåëåíî òàêîå, åäèíñòâåííîé ðåàêöèåé íà êîòîðîå ÿâëÿåòñÿ íåìåäëåííîå àâàðèéíîå çàâåðøåíèå
ïîëó÷èâøåé åãî çàäà÷è), ïðè ýòîì âñå çàäà÷è èç î÷åðåäè îæèäàíèÿ àêòèâèçèðóþòñÿ;
W ait(E ) îæèäàòü ñîáûòèÿ, (åñëè ñîáûòèÿ íåò, ò.å. ïåðåìåííàÿ E ðàâíà 0 , òî ýòà
îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ ïðèõîäà ñîáûòèÿ, è äîáàâëÿåò åå
â êîíåö î÷åðåäè îæèäàíèÿ ýòîãî ñîáûòèÿ, êàê òîëüêî ñîáûòèå ïðèäåò, çàäà÷à áóäåò
àêòèâèçèðîâàíà);
DR
( ) î÷èñòèòü (óäàëèòü ïîñòóïèâøåå ñîáûòèå), ò.å. óñòàíîâèòü ïåðåìåííóþ
Reset E
0;
( ) ïðîâåðèòü (ïîñòóïëåíèå) ïîëó÷èòü çíà÷åíèå ïåðåìåííîé
T est E
E
E
â
.
Ðàññìîòðèì ïðèìåð.
1.
2.
3.
4.
5.
30
çàäà÷à B âûçâàëà
ïðîäîëæàåò èñïîëíåíèå;
B:W ait
B
W ait
; ïîñêîëüêó
Reset áûëà âûçâàíà ôóíêöèÿ óñòàíîâêè
çàäà÷åé);
B:W ait
íèÿ;
C:W ait
íèÿ;
ïîñêîëüêó
E
ïîñêîëüêó
E
= 0 , òî çàäà÷à
= 0 , òî çàäà÷à
A:S end óñòàíîâèòü E
àêòèâèçèðîâàòü B è C .
= 1,
E
E
= 1 , òî ýòî íå èìååò íèêàêîãî ýôôåêòà,
= 0 (îäíîé çàäà÷
A
,
B
èëè
C
, èëè äðóãîé
B
çàáëîêèðîâàíà è ïîìåùåíà â î÷åðåäü îæèäà-
C
çàáëîêèðîâàíà è ïîìåùåíà â î÷åðåäü îæèäà-
àêòèâèçèðîâàòü âñå çàäà÷è èç î÷åðåäè îæèäàíèÿ, ò.å.
5.3. Ïî÷òîâûå ÿùèêè
5.3. Ïî÷òîâûå ÿùèêè
T
Îïðåäåëåíèå. Ïî÷òîâûå ÿùèêè ýòî îáúåêò îáìåíà äàííûìè ìåæäó çàäà÷àìè, óñòðîåííûé â âèäå î÷åðåäè FIFO. Ñ êàæäûì ïî÷òîâûì ÿùèêîì ñâÿçàíû:
1. î÷åðåäü ñîîáùåíèé (îáðàçóþùàÿ ñîäåðæèìîå ïî÷òîâîãî ÿùèêà),
2. î÷åðåäü çàäà÷, îæèäàþùèõ ñîîáùåíèé â ïî÷òîâîì ÿùèêå,
3. î÷åðåäü çàäà÷, îæèäàþùèõ îñâîáîæäåíèÿ ìåñòà â ïî÷òîâîì ÿùèêå,
AF
4. ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ, îáåñïå÷èâàþùèé ïðàâèëüíûé äîñòóï íåñêîëüêèõ çàäà÷ ê îäíèì è òåì æå ñîîáùåíèÿì â ïî÷òîâîì ÿùèêå.
Êîëè÷åñòâî çàäà÷, îæèäàþùèõ ñîîáùåíèÿ â ïî÷òîâîì ÿùèêå, îáû÷íî íå îãðàíè÷åíî. Êîëè÷åñòâî æå ñîîáùåíèé â ÿùèêå îáû÷íî îãðàíè÷åíî ïàðàìåòðîì, óêàçàííûì ïðè ñîçäàíèè ÿùèêà.
Ýòî ñâÿçàíî ñ òåì, ÷òî ðàçìåð êàæäîãî ñîîáùåíèÿ óêàçûâàåòñÿ ïðè ñîçäàíèè ÿùèêà è ìîæåò
áûòü çíà÷èòåëüíûì. Åñëè ÿùèê ïîëîí è çàäà÷à ïûòàåòñÿ ïîìåñòèòü â íåãî íîâîå ñîîáùåíèå,
òî îíà áëîêèðóåòñÿ äî òåõ ïîð, ïîêà â ÿùèêå íå ïîÿâèòñÿ ñâîáîäíîå ìåñòî. Íàä ïî÷òîâûìè
ÿùèêàìè îïðåäåëåíû ñëåäóþùèå ýëåìåíòàðíûå îïåðàöèè
ïîïðîáîâàòü ïîëîæèòü ñîîáùåíèå â ïî÷òîâûé ÿùèê åñëè â ÿùèêå åñòü ñâîáîäíîå ìåñòî, òî ýòà îïåðàöèÿ ýêâèâàëåíòíà ïîëîæèòü, èíà÷å âåðíóòü ïðèçíàê îòñóòñòâèÿ ìåñòà;
ïîëîæèòü â íà÷àëî òî æå, ÷òî ïîëîæèòü, òîëüêî ñîîáùåíèå ïîìåùàåòñÿ â ãîëîâó î÷åðåäè;
ïîïðîáîâàòü ïîëîæèòü â íà÷àëî òî æå, ÷òî ïîïðîáîâàòü ïîëîæèòü, òîëüêî ñîîáùåíèå
ïîìåùàåòñÿ â ãîëîâó î÷åðåäè;
DR
ïîëîæèòü ñîîáùåíèå â ïî÷òîâûé ÿùèê, ïðè ýòîì çàäà÷à, âûçâàâøàÿ ýòó îïåðàöèþ ìîæåò áûòü áëîêèðîâàíà è ïîìåùåíà â î÷åðåäü çàäà÷, îæèäàþùèõ îñâîáîæäåíèÿ ìåñòà
â ÿùèêå, åñëè â ÿùèêå íåò ñâîáîäíîãî ìåñòà (àêòèâèçàöèÿ íàñòóïèò ñðàçó ïîñëå âçÿòèÿ ïåðâîãî æå ñîîáùåíèÿ èç î÷åðåäè ñîîáùåíèé); åñëè î÷åðåäü îæèäàþùèõ ñîîáùåíèÿ
çàäà÷ íåïóñòà, òî àêòèâèçèðóþòñÿ âñå çàäà÷è èç ýòîé î÷åðåäè;
âçÿòü ñîîáùåíèå èç ïî÷òîâîãî ÿùèêà, ïðè ýòîì çàäà÷à, âûçâàâøàÿ ýòó îïåðàöèþ ìîæåò
áûòü áëîêèðîâàíà è ïîìåùåíà â î÷åðåäü çàäà÷, îæèäàþùèõ ñîîáùåíèÿ, åñëè â ÿùèêå íåò ñîîáùåíèé; ïðè ïîñòóïëåíèè ñîîáùåíèÿ îíà áóäåò àêòèâèçèðîâàíà; ïðè ýòîì,
åñëè â î÷åðåäè îæèäàþùèõ ñîîáùåíèÿ çàäà÷ íàõîäèòñÿ áîëåå îäíîé çàäà÷è, òî ïðè âûïîëíåíèè îïåðàöèè âçÿòü îáåñïå÷èâàåòñÿ ìåõàíèçì âçàèìíîãî èñêëþ÷åíèÿ çàäà÷ (ò.å.
ïîêà âûïîëíÿåòñÿ ýòà îïåðàöèÿ îäíîé çàäà÷åé âñå äðóãèå çàäà÷è, çàïðîñèâøèå òó æå
îïåðàöèþ, çàáëîêèðîâàíû);
ïîïðîáîâàòü âçÿòü ñîîáùåíèå èç ïî÷òîâîãî ÿùèêà åñëè â ÿùèêå åñòü ñîîáùåíèÿ, òî
ýòà îïåðàöèÿ ýêâèâàëåíòíà âçÿòü, èíà÷å âåðíóòü ïðèçíàê îòñóòñòâèÿ ñîîáùåíèé;
î÷èñòèòü ÿùèê óäàëèòü âñå ñîîáùåíèÿ èç î÷åðåäè.
Ôàêòè÷åñêè îïèñàííûé ìåõàíèçì ïðåäñòàâëÿåò ñîáîé âçàèìîäåéñòâèå êëèåíòñåðâåð, êîãäà
çàäà÷èêëèåíòû ïîìåùàþò çàïðîñû â ïî÷òîâûé ÿùèê, à çàäà÷èñåðâåðû èõ îòòóäà çàáèðàþò.
5.4. Âçàèìîäåéñòâèå êëèåíò ñåðâåð
Îïðåäåëåíèå. Âçàèìîäåéñòâèåì êëèåíò ñåðâåð íàçûâàåòñÿ ñïîñîá ïåðåäà÷è èíôîðìàöèè îò îäíîé çàäà÷è ê äðóãîé.
Ðàíåå ìû ðàññìîòðåëè íåñêîëüêî ñïîñîáîâ îáåñïå÷åíèÿ òàêîãî âçàèìîäåéñòâèÿ (ñì. ñåìàôîðû è ïî÷òîâûå ÿùèêè).
31
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
5.5. Î÷åðåäè çàäà÷
T
Äëÿ îáåñïå÷åíèÿ ðàññìîòðåííûõ âûøå âèäîâ âçàèìîäåéñòâèÿ è ñèíõðîíèçàöèè çàäà÷ îïåðàöèîííàÿ ñèñòåìà ñòðîèò ðÿä î÷åðåäåé çàäà÷.
ýòî î÷åðåäü çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè èñïîëíåíèÿ (ïîëó÷àþùèõ ïðîöåññîðíîå âðåìÿ â ñîîòâåòñòâèè ñ òåì èëè èíûì àëãîðèòìîì
ðàçäåëåíèÿ âðåìåíè).
Î÷åðåäü âûïîëíÿåìûõ çàäà÷
Î÷åðåäü çàäà÷, îæèäàþùèõ ñåìàôîðà
Î÷åðåäü çàäà÷, îæèäàþùèõ ñîáûòèÿ
ôîðà.
ýòî î÷åðåäü çàäà÷, íàõîäÿùèõñÿ â ñîñòîÿíèè ãîòîâíîñòè.
ñòðîèòñÿ äëÿ êàæäîãî ñîçäàííîãî ñåìà-
AF
Î÷åðåäü ãîòîâûõ çàäà÷
ñòðîèòñÿ äëÿ êàæäîãî ñîáûòèÿ.
Ýòî áàçîâûå î÷åðåäè, íà îñíîâå êîòîðûõ ñòðîÿòñÿ äðóãèå. Íàïðèìåð, ïî÷òîâûå ÿùèêè ÷àñòî
ðåàëèçóþòñÿ íà áàçå ñåìàôîðîâ è ñîáûòèé, è ñ êàæäûì èç ïî÷òîâûõ ÿùèêîâ ñâÿçàíû ïî äâå
î÷åðåäè çàäà÷ (îæèäàþùèõ ñîîáùåíèé è îæèäàþùèõ ñâîáîäíîãî ìåñòà â ÿùèêå).
Ýòè î÷åðåäè âåäóòñÿ îïåðàöèîííîé ñèñòåìîé, ïîýòîìó èñïîëüçîâàíèå ëþáîãî îáúåêòà
âçàèìîäåéñòâèÿ è ñèíõðîíèçàöèè, ïðèâîäèò ê ñèñòåìíûì âûçîâàì. Ïðè ëþáîì òàêîì âûçîâå
èñïîëíåíèå ïðîõîäèò ïî ÿäðó ñèñòåìû è ìåíåäæåðàì çàäà÷ è ïàìÿòè, è, ñëåäîâàòåëüíî, ëþáîé
âûçîâ ñîïðÿæåí ñ äîïîëíèòåëüíûìè ðàñõîäàìè.
5.6. Îáúåêòû ñèíõðîíèçàöèè POSIX
Ñòàíäàðò POSIX 1003.1b (ñì. ðàçäåë 3.2) îïðåäåëÿåò ðÿä îáúåêòîâ ñèíõðîíèçàöèè, êîòîðûå äîëæíû ïðèñóòñòâîâàòü â ñèñòåìàõ ðåàëüíîãî âðåìåíè:
Ñåìàôîðû:
ëîãè÷åñêè ñîâïàäàþò ñ îïèñàííûìè âûøå áóëåâñêèìè ñåìàôîðàìè. Èäåíòèôèêàòîðîì ñåìàôîðà ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà.
Î÷åðåäè ñîîáùåíèé:
ëîãè÷åñêè ñîâïàäàþò ñ îïèñàííûìè âûøå ïî÷òîâûìè ÿùèêàìè. Èäåíòèôèêàòîðîì
î÷åðåäè ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà.
DR
Ðàçäåëÿåìàÿ ïàìÿòü:
åå èäåíòèôèêàòîðîì ÿâëÿåòñÿ èìÿ, ñèíòàêñè÷åñêè óñòðîåííîå êàê èìÿ ôàéëà.
Ñòàíäàðò POSIX 1003.1c (ñì. ðàçäåë 3.2) îïðåäåëÿåò ðÿä îáúåêòîâ ñèíõðîíèçàöèè, êîòîðûå äîëæíû ïðèñóòñòâîâàòü â ñèñòåìàõ, èñïîëüçóþùèõ çàäà÷è (threads):
Îáúåêòû mutex:
îáåñïå÷èâàþò âçàèìíîå èñêëþ÷åíèå (MUTual EXclusion) ðàáîòàþùèõ çàäà÷ (ñì. ðàçäåë 5.6.1).
Îáúåêòû condvar:
îáåñïå÷èâàþò âçàèìíîå èñêëþ÷åíèå ðàáîòàþùèõ çàäà÷ ïðè ïðèíÿòèè óñëîâíîé ïåðåìåííîé (CONDitional VARiable) îïðåäåëåííîãî çíà÷åíèÿ (ñì. ðàçäåë 5.6.2).
5.6.1. Îáúåêòû ñèíõðîíèçàöèè òèïà mutex
Îáúåêòû ñèíõðîíèçàöèè òèïà mutex ôàêòè÷åñêè ïðåäñòàâëÿþò ñîáîé íåêîòîðå ðàçâèòèå
áóëåâñêèõ ñåìàôîðîâ â ïëàíå ïîâûøåíèÿ áåçîïàñíîñòè ðàáîòû ïðîãðàììû.
Òèïè÷íûé öèêë ðàáîòû ñ ðàçäåëÿåìûì ðåñóðñîì ñëåäóþùèé: âçÿòü ñåìàôîð, ðàáîòàòü
ñ ðåñóðñîì, âåðíóòü ñåìàôîð. Îäíàêî, åñëè â ðåçóëüòàòå îøèáêè â ïðîãðàììå îíà âíà÷àëå
âûçîâåò ôóíêöèþ âåðíóòü ñåìàôîð (íå âçÿâ åãî!), à çàòåì âûïîëíèò ïðèâåäåííûé âûøå öèêë
ðàáîòû ñ ðàçäåëÿåìûì ðåñóðñîì, òî ôóíêöèÿ âçÿòü ñåìàôîð íå áëîêèðóåò çàäà÷ó, åñëè ðåñóðñ
çàíÿò.
32
5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX
T
Äëÿ áîðüáû ñ ýòèì ÿâëåíèåì ââîäèòñÿ îáúåêò mutex, êîòîðûé ôàêòè÷åñêè ñîñòîèò èç ïàðû: áóëåâñêîãî ñåìàôîðà è èäåíòèôèêàòîðà çàäà÷è òåêóùåãî âëàäåëüöà ñåìàôîðà (ò.å. òîé
çàäà÷è, êîòîðàÿ óñïåøíî âûçâàëà ôóíêöèþ âçÿòü è ñòàëà âëàäåëüöåì ðàçäåëÿåìîãî ðåñóðñà).
Äëÿ äîñòóïà ê îáúåêòó mutex m îïðåäåëåíû òðè ïðèìèòèâíûå îïåðàöèè:
Lock (m) áëîêèðîâàòü mutex m , åñëè m óæå çàáëîêèðîâàí äðóãîé çàäà÷åé, òî ýòà
îïåðàöèÿ ïåðåâîäèò çàäà÷ó â ñîñòîÿíèå îæèäàíèÿ ðàçáëîêèðîâàíèÿ m ;
U nlock (m) ðàçáëîêèðîâàòü mutex m , (åñëè m îæèäàåòñÿ äðóãîé çàäà÷åé, òî îíà
ìîæåò áûòü àêòèâèçèðîâàíà, óäàëåíà èç î÷åðåäè îæèäàíèÿ è ìîæåò âûòåñíèòü òåêóùóþ
çàäà÷ó, íàïðèìåð, åñëè åå ïðèîðèòåò âûøå); åñëè âûçâàâøàÿ ýòó îïåðàöèþ çàäà÷à íå
ÿâëÿåòñÿ âëàäåëüöåì m , òî îïåðàöèÿ íå èìååò íèêàêîãî ýôôåêòà;
T ryLock (m) ïîïðîáîâàòü áëîêèðîâàòü mutex m , åñëè m íå áëîêèðîâàí, òî ýòà îïåðàöèÿ ýêâèâàëåíòíà Lock (m) , èíà÷å âîçâðàùàåòñÿ ïðèçíàê íåóäà÷è.
AF
Ýòè îïåðàöèè íåäåëèìû, ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî.
5.6.2. Îáúåêòû ñèíõðîíèçàöèè òèïà condvar
Îáúåêò ñèíõðîíèçàöèè òèïà condvar äàåò âîçìîæíîñòü çàäà÷å îæèäàòü âûïîëíåíèÿ íåêîòîðûõ óñëîâèé. Ôàêòè÷åñêè îí ñîñòîèò èç îáúåêòà ñîáûòèÿ E (ñì. ðàçäåë 5.2), ñ îäíèì
îòëè÷èåì: ïðè ïîñòóïëåíèè ñîáûòèÿ (ïîñðåäñòâîì ôóíêöèè S end ) òîëüêî îäíà èç î÷åðåäè
îæèäàþùèõ ñîáûòèÿ çàäà÷ àêòèâèçèðóåòñÿ. Äëÿ äîñòóïà ê îáúåêòó condvar E îïðåäåëåíû
òðè ïðèìèòèâíûå îïåðàöèè:
(
m òèïà mutex) ïðîèçâîäèò ñëåäóþùèå äåéñòâèÿ (ïåðâûå äâà èç íèõ
ò.å. ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ èõ èñïîëíåíèÿ çàïðåùåíî):
( ) äëÿ òåêóùåé çàäà÷è (ò.å. âûçâàâøåé ýòó îïåðàöèþ),
âûçâàòü
( ),
âûçâàòü
( );
( ) âûçâàòü
( );
( ) âûçâàòü
( ) è àêòèâèçèðîâàòü âñå îæèäàþùèå çàäà÷è (ò.å. òîò
âûçâàòü
S ignal E
Broadcast E
U nlock m
W ait E
Lock m
S end E
S end E
DR
) (ãäå
W ait E ; m
íåäåëèìû,
æå ýôôåêò, ÷òî è äëÿ ôóíêöèè
S end
, îïèñàííîé â ðàçäåëå 5.2.
5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX
Ïðèâîäèìàÿ íèæå ïðîãðàììà ñ÷èòûâàåò ñòðîêó ñî ñòàíäàðòíîãî ââîäà è âûâîäèò åå íà
ñòàíäàðòíûé âûâîä. Äëÿ ÷òåíèÿ ñòðîêè è äëÿ åå âûâîäà ñîçäàþòñÿ äâå çàäà÷è (thread),
êîäîì äëÿ êîòîðûõ ÿâëÿþòñÿ ôóíêöèè reader è writer ñîîòâåòñòâåííî. Ïîñêîëüêó çàäà÷è
ðàáîòàþò â òîì æå àäðåñíîì ïðîñòðàíñòâå, ÷òî è ñîçäàâøèé èõ ïðîöåññ, òî îíè àâòîìàòè÷åñêè
ðàçäåëÿþò âñå ïåðåìåííûå, âêëþ÷àÿ áóôåð ñîîáùåíèé msgbuf. Äëÿ îðãàíèçàöèè âçàèìíîãî
èñêëþ÷åíèÿ ïðè äîñòóïå ê êðèòè÷åñêèì ðàçäåëÿåìûì ðåñóðñàì (ïåðåìåííûì done, msglen,
msgbuf) èñïîëüçóåòñÿ îáúåêò ñèíõðîíèçàöèè mutex mutx.
#include <stdio.h>
#include <pthread.h>
/* Êîìïèëÿöèÿ â POSIX-ñîâìåñòèìûõ ñèñòåìàõ (íàïðèìåð, Linux): */
/* cc <èìÿ_ôàéëà> -lpthread
*/
#define BUF_LEN 256
pthread_mutex_t mutx;
/* Îáúåêò ñèíõðîíèçàöèè òèïà mutex
*/
33
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
/* Ïðèçíàê îêîí÷àíèÿ ðàáîòû
/* Äëèíà ñîîáùåíèÿ
/* Áóôåð äëÿ ñîîáùåíèÿ
*/
*/
*/
T
int done;
int msglen;
char msgbuf[BUF_LEN];
DR
AF
/* Æäàòü ñîîáùåíèÿ, ïî åãî ïîñòóïëåíèè âûâåñòè åãî íà ýêðàí.
Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ
îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí.
Àðãóìåíò argp íå èñïîëüçóåòñÿ. */
void * writer (void * argp)
{
for (;;)
{
pthread_mutex_lock (&mutx);
/* "çàõâàòèòü" mutex
if (done)
{
/* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è
printf ("Thread %x exits\n", (int)pthread_self ());
pthread_mutex_unlock (&mutx); /* "îñâîáîäèòü" mutex
pthread_exit (0);
/* çàâåðøèòü çàäà÷ó
return 0;
/* íèêîãäà
}
if (msglen)
{
printf ("*> %s\n", msgbuf); /* âûâåñòè íà ýêðàí
msglen = 0;
}
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex
/* Ïîìåñòèòü çàäà÷ó â êîíåö î÷åðåäè ãîòîâûõ çàäà÷ ñ òåì
/* æå ïðèîðèòåòîì
sched_yield ();
}
}
/* Ñ÷èòàòü ñîîáùåíèå è ïîìåñòèòü åãî â áóôåð.
Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ
îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí.
Àðãóìåíò argp íå èñïîëüçóåòñÿ. */
void * reader (void *argp)
{
for (;;)
{
pthread_mutex_lock (&mutx);
/* "çàõâàòèòü" mutex
if (!msglen)
{
/* Ñ÷èòàòü ñîîáùåíèå. Âûõîä ïî Ctrl+D
if (!fgets (msgbuf, BUF_LEN, stdin))
break;
msglen = strlen (msgbuf) + 1;
}
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex
/* Ïîìåñòèòü çàäà÷ó â êîíåö î÷åðåäè ãîòîâûõ çàäà÷ ñ òåì
/* æå ïðèîðèòåòîì
sched_yield ();
}
34
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX
int main ()
{
pthread_t wtid, rtid;
*/
*/
*/
/* äåñêðèïòîðû çàäà÷
*/
/* ñîçäàòü mutex
*/
AF
if (pthread_mutex_init (&mutx, 0))
perror ("pthread_mutex_init");
*/
T
}
/* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è
printf ("Thread %x exits\n", (int)pthread_self ());
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex
pthread_exit (0);
/* çàâåðøèòü çàäà÷ó
return 0;
/* íèêîãäà
if (pthread_create (&wtid, 0, writer, 0)) /* ñîçäàòü çàäà÷ó */
perror ("pthread_create");
if (pthread_create (&rtid, 0, reader, 0)) /* ñîçäàòü çàäà÷ó */
perror ("pthread_create");
if (!pthread_join (rtid, 0)) /* æäàòü îêîí÷àíèÿ çàäà÷è rtid */
done = 1;
pthread_join (wtid, 0);
/* æäàòü îêîí÷àíèÿ çàäà÷è wtid */
if (pthread_mutex_destroy (&mutx))
perror ("pthread_mutex_destroy");
}
return 0;
/* óäàëèòü mutex
*/
Åñëè âî âðåìÿ ðàáîòû ýòîé ïðîãðàììû ïîñìîòðåòü ñïèñîê çàäà÷ â ñèñòåìå, òî ìû óâèäèì,
÷òî ýòîé ïðîãðàììå èõ ñîîòâåòñòâóåò ÷åòûðå (!):
DR
1. çàïóùåííûé ïðîöåññ,
2. ãëàâíàÿ çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè main,
3. çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè reader,
4. çàäà÷à, ñîîòâåòñòâóþùàÿ ôóíêöèè writer.
Ïðèâåäåííàÿ âûøå ïðîãðàììà ÿâëÿåòñÿ íå ñîâñåì êîððåêòíîé â ñëåäóþùåì ñìûñëå.
Êàæäàÿ èç ôóíêöèé reader/writer äåëàåò ïðåäïîëîæåíèå î òîì, ÷òî âòîðàÿ ôóíêöèÿ
writer/reader â ìîìåíò âûçîâà ôóíêöèè sched_yield æäåò òîëüêî îñâîáîæäåíèÿ mutex mutx. Äëÿ äàííîé ïðîãðàììû ýòî ïðåäïîëîæåíèå âåðíî, íî â îáùåì ñëó÷àå òðåáóåòñÿ îáåñïå÷èòü, ÷òîáû ïîñëå âûïîëíåíèÿ ôóíêöèè reader/writer ñëåäóþùåé âûïîëíÿëàñü
writer/reader, åñëè æå ïîñëåäíÿÿ çàíÿòà (íå îáðàáîòàëà ïðåäûäóùåå ñîîáùåíèå), òî òåêóùàÿ çàäà÷à äîëæíà ïåðåéòè â ñîñòîÿíèå îæèäàíèÿ, à íå ïîòðåáëÿòü ïðîöåññîðíûå ðåñóðñû â áåñïîëåçíîì öèêëå îïðîñà. Íèæå ïðèâîäèòñÿ ìîäèôèöèðîâàííûé âàðèàíò ýòîé
ïðîãðàììû, â êîòîðîì ïîìèìî îáúåêòà mutex äëÿ âçàèìíîãî èñêëþ÷åíèÿ ïðè äîñòóïå ê
ðàçäåëÿåìûì äàííûì èñïîëüçóåòñÿ îáúåêò condvar äëÿ ñèíõðîíèçàöèè ñàìèõ çàäà÷. Ôóíêöèåé pthread_cond_wait çàäà÷à ïåðåõîäèò â ðåæèì îæèäàíèÿ äàííûõ îò äðóãîé çàäà÷è, à
ôóíêöèåé pthread_cond_signal îíà ñîîáùàåò î ãîòîâíîñòè äàííûõ.
#include <stdio.h>
#include <pthread.h>
35
5. Ñèíõðîíèçàöèÿ è âçàèìîäåéñòâèå ïðîöåññîâ
#define BUF_LEN 256
/*
/*
/*
/*
/*
Îáúåêò ñèíõðîíèçàöèè òèïà mutex
Îáúåêò ñèíõðîíèçàöèè òèïà condvar
Ïðèçíàê îêîí÷àíèÿ ðàáîòû
Äëèíà ñîîáùåíèÿ
Áóôåð äëÿ ñîîáùåíèÿ
*/
*/
*/
*/
*/
AF
pthread_mutex_t mutx;
pthread_cond_t condx;
int done;
int msglen;
char msgbuf[BUF_LEN];
T
/* Êîìïèëÿöèÿ â POSIX-ñîâìåñòèìûõ ñèñòåìàõ (íàïðèìåð, Linux): */
/* cc <èìÿ_ôàéëà> -lpthread
*/
DR
/* Æäàòü ñîîáùåíèÿ, ïî åãî ïîñòóïëåíèè âûâåñòè åãî íà ýêðàí.
Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ
îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí.
Àðãóìåíò argp íå èñïîëüçóåòñÿ. */
void * writer (void * argp)
{
for (;;)
{
pthread_mutex_lock (&mutx);
/* "çàõâàòèòü" mutex */
while (!msglen)
{
/* Îñâîáîäèòü mutex è æäàòü ñèãíàëà îò condvar,
*/
/* çàòåì "çàõâàòèòü" mutex îïÿòü
*/
pthread_cond_wait (&condx, &mutx);
if (done)
{
/* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è
*/
printf ("Thread %x exits\n", (int)pthread_self ());
pthread_mutex_unlock (&mutx);/*"îñâîáîäèòü" mutex*/
pthread_exit (0);
/* çàâåðøèòü çàäà÷ó */
return 0;
/* íèêîãäà
*/
}
}
printf ("*> %s\n", msgbuf);
/* âûâåñòè íà ýêðàí
*/
msglen = 0;
/* Ïîñëàòü ñèãíàë condvar
*/
pthread_cond_signal (&condx);
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex */
}
}
/* Ñ÷èòàòü ñîîáùåíèå è ïîìåñòèòü åãî â áóôåð.
Ôóíêöèÿ ðàáîòàåò êàê íåçàâèñèìàÿ çàäà÷à, âûçûâàåìàÿ
îïåðàöèîííîé ñèñòåìîé, ïîýòîìó ïðîòîòèï ôèêñèðîâàí.
Àðãóìåíò argp íå èñïîëüçóåòñÿ. */
void * reader (void *argp)
{
for (;;)
{
pthread_mutex_lock (&mutx);
/* "çàõâàòèòü" mutex
if (!msglen)
{
36
*/
5.7. Ïðèìåð èñïîëüçîâàíèÿ îáúåêòîâ ñèíõðîíèçàöèè POSIX
*/
T
/* Ñ÷èòàòü ñîîáùåíèå. Âûõîä ïî Ctrl+D
if (!fgets (msgbuf, BUF_LEN, stdin))
break;
msglen = strlen (msgbuf) + 1;
/* Ïîñëàòü ñèãíàë condvar
pthread_cond_signal (&condx);
*/
}
AF
}
while (msglen)
{
/* Îñâîáîäèòü mutex è æäàòü ñèãíàëà îò condvar,
*/
/* çàòåì "çàõâàòèòü" mutex îïÿòü
*/
pthread_cond_wait (&condx, &mutx);
}
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex */
}
/* Íàïå÷àòàòü èäåíòèôèêàòîð òåêóùåé çàäà÷è
printf ("Thread %x exits\n", (int)pthread_self ());
pthread_mutex_unlock (&mutx);
/* "îñâîáîäèòü" mutex
pthread_exit (0);
/* çàâåðøèòü çàäà÷ó
return 0;
/* íèêîãäà
int main ()
{
pthread_t wtid, rtid;
if (pthread_mutex_init (&mutx, 0))
perror ("pthread_mutex_init");
if (pthread_cond_init (&condx, 0))
perror ("pthread_cond_init");
*/
*/
*/
*/
/* äåñêðèïòîðû çàäà÷
*/
/* ñîçäàòü mutex
*/
/* ñîçäàòü condvar
*/
DR
if (pthread_create (&wtid, 0, writer, 0)) /* ñîçäàòü çàäà÷ó */
perror ("pthread_create");
if (pthread_create (&rtid, 0, reader, 0)) /* ñîçäàòü çàäà÷ó */
perror ("pthread_create");
if (!pthread_join (rtid, 0)) /* æäàòü îêîí÷àíèÿ çàäà÷è rtid */
{
done = 1;
pthread_cond_signal (&condx);
}
pthread_join (wtid, 0);
/* æäàòü îêîí÷àíèÿ çàäà÷è wtid */
if (pthread_mutex_destroy (&mutx))
perror ("pthread_mutex_destroy");
if (pthread_cond_destroy (&condx))
perror ("pthread_cond_destroy");
}
/* óäàëèòü mutex
*/
return 0;
37
6. Óïðàâëåíèå çàäà÷àìè
6. Óïðàâëåíèå çàäà÷àìè
6.1. Ïëàíèðîâàíèå çàäà÷
T
Óïðàâëåíèå çàäà÷àìè (ïðîöåññàìè, ïðîöåäóðàìè îáðàáîòêè ïðåðûâàíèé) ÿâëÿåòñÿ âàæíåéøåé ôóíêöèåé ëþáîé îïåðàöèîííîé ñèñòåìû. Èìåííî ñïåöèôè÷åñêèé ìåõàíèçì ïëàíèðîâàíèÿ çàäà÷ è ïðîöåäóð îáðàáîòêè ïðåðûâàíèé äåëàåò îïåðàöèîííóþ ñèñòåìó ñèñòåìîé
ðåàëüíîãî âðåìåíè.
DR
AF
Íåîáõîäèìîñòü ïëàíèðîâàíèÿ çàäà÷ ïîÿâëÿåòñÿ, êàê òîëüêî â î÷åðåäè àêòèâíûõ (ãîòîâûõ) çàäà÷ ïîÿâëÿþòñÿ áîëåå îäíîé çàäà÷è (â ìíîãîïðîöåññîðíûõ ñèñòåìàõ áîëåå ÷èñëà
èìåþùèõñÿ ïðîöåññîðîâ). Àëãîðèòì ïëàíèðîâàíèÿ çàäà÷ ÿâëÿåòñÿ îñíîâíûì îòëè÷èåì ñèñòåì ðåàëüíîãî âðåìåíè îò îáû÷íûõ îïåðàöèîííûõ ñèñòåì.  ïîñëåäíèõ öåëüþ ïëàíèðîâàíèÿ ÿâëÿåòñÿ îáåñïå÷åíèå âûïîëíåíèÿ âñåõ çàäà÷ èç î÷åðåäè ãîòîâûõ çàäà÷, îáåñïå÷èâàÿ
èëëþçèþ èõ ïàðàëëåëüíîé ðàáîòû è íå äîïóñêàÿ ìîíîïîëèçàöèþ ïðîöåññîðà êàêîé-ëèáî èç
çàäà÷.  ÎÑРæå öåëüþ ïëàíèðîâàíèÿ ÿâëÿåòñÿ îáåñïå÷åíèå âûïîëíåíèÿ êàæäîé ãîòîâîé
çàäà÷è ê îïðåäåëåííîìó ìîìåíòó âðåìåíè, ïðè ýòîì ÷àñòî ïàðàëëåëüíîñòü ðàáîòû
çàäà÷ íå äîïóñêàåòñÿ, ïîñêîëüêó òîãäà âðåìÿ èñïîëíåíèÿ çàäà÷è áóäåò çàâèñåòü îò íàëè÷èÿ
äðóãèõ çàäà÷.
Âàæíåéøèì òðåáîâàíèåì ïðè ïëàíèðîâàíèè çàäà÷ â ÎÑÐÂ ÿâëÿåòñÿ ïðåäñêàçóåìîñòü
âðåìåíè ðàáîòû çàäà÷è. Ýòî âðåìÿ íå äîëæíî çàâèñåòü îò òåêóùåé çàãðóæåííîñòè ñèñòåìû, êîëè÷åñòâà çàäà÷ â î÷åðåäÿõ îæèäàíèÿ (ïðîöåññîðà, ñåìàôîðà, ñîáûòèÿ, . . . ) è ò.ä. Ïðè
ýòîì æåëàòåëüíî, ÷òîáû äëèíà ýòèõ î÷åðåäåé íå áûëà áû îãðàíè÷åíà (ò.å. îãðàíè÷åíà òîëüêî
îáúåìîì ïàìÿòè, äîñòóïíîé ñèñòåìå).
Îïðåäåëåíèå. Ïëàíèðîâùèê çàäà÷ (scheduler) ýòî ìîäóëü (ïðîãðàììà), îòâå÷àþùèé
çà ðàçäåëåíèå âðåìåíè èìåþùèõñÿ ïðîöåññîðîâ ìåæäó âûïîëíÿþùèìèñÿ çàäà÷àìè. Îòâå÷àåò
çà êîììóòàöèþ çàäà÷ èç ñîñòîÿíèÿ áëîêèðîâêè â ñîñòîÿíèå ãîòîâíîñòè, è çà âûáîð çàäà÷è
(çàäà÷ ïî ÷èñëó ïðîöåññîðîâ) èç ÷èñëà ãîòîâûõ äëÿ èñïîëíåíèÿ ïðîöåññîðîì(àìè).
 ìíîãîïðîöåññîðíûõ ñèñòåìàõ êîëè÷åñòâî î÷åðåäåé ãîòîâûõ çàäà÷ (î÷åðåäåé îæèäàíèÿ)
ìîæåò çàâèñåòü îò òèïà àðõèòåêòóðû ñèñòåìû.  ñèììåòðè÷íûõ ìíîãîïðîöåññîðíûõ ñèñòåìàõ (SMP, Symmetric MultiProcessor system) îáû÷íî åñòü îäíà î÷åðåäü îæèäàíèÿ äëÿ âñåõ
ïðîöåññîðîâ.  äðóãèõ ñèñòåìàõ ìîæåò áûòü ïî îäíîé î÷åðåäè íà ïðîöåññîð (èëè ïî îäíîé
î÷åðåäè íà ãðóïïó ïðîöåññîðîâ, îáðàçóþùèõ SMP ñèñòåìó).
6.1.1. Ïðèîðèòåòû
Íàïîìíèì, ÷òî ïðèîðèòåòîì íàçûâàåòñÿ ÷èñëî, ïðèïèñàííîå îïåðàöèîííîé ñèñòåìîé (à
èìåííî, ïëàíèðîâùèêîì çàäà÷) êàæäîìó ïðîöåññó è çàäà÷å. Ñóùåñòâóþò íåñêîëüêî ñõåì
íàçíà÷åíèÿ ïðèîðèòåòîâ.
Ôèêñèðîâàííûå
Òóðíèðíîå
38
ïðèîðèòåòû ïðèîðèòåò çàäà÷å íàçíà÷àåòñÿ ïðè åå ñîçäàíèè è íå
ìåíÿåòñÿ â òå÷åíèå åå æèçíè. Ýòà ñõåìà ñ ðàçëè÷íûìè äîïîëíåíèÿìè ïðèìåíÿåòñÿ â
áîëüøèíñòâå ñèñòåì ðåàëüíîãî âðåìåíè.  ñõåìàõ ïëàíèðîâàíèÿ ÎÑР÷àñòî òðåáóåòñÿ,
÷òîáû ïðèîðèòåò êàæäîé çàäà÷è áûë óíèêàëüíûì, ïîýòîìó ÷àñòî ÎÑРèìåþò áîëüøîå
÷èñëî ïðèîðèòåòîâ (îáû÷íî 255 è áîëåå).
íèæàåòñÿ.
îïðåäåëåíèå ïðèîðèòåòà ïðèîðèòåò ïîñëåäíåé èñïîëíÿâøåéñÿ çàäà÷è ïî-
Îïðåäåëåíèå ïðèîðèòåòà ïî àëãîðèòìó round robin ïðèîðèòåò çàäà÷è îïðåäåëÿåòñÿ
åå íà÷àëüíûì ïðèîðèòåòîì è âðåìåíåì åå îáñëóæèâàíèÿ. ×åì áîëüøå çàäà÷à îáñëóæèâàåòñÿ ïðîöåññîðîì, òåì ìåíüøå åå ïðèîðèòåò (íî íå îïóñêàåòñÿ íèæå íåêîòîðîãî ïîðîãîâîãî çíà÷åíèÿ). Ýòà ñõåìà â òîì èëè èíîì âèäå ïðèìåíÿåòñÿ â áîëüøèíñòâå UNIX
ñèñòåì.
6.1. Ïëàíèðîâàíèå çàäà÷
AF
T
Îòìåòèì, ÷òî â ðàçíûõ ñèñòåìàõ ðàçëè÷íûå àëãîðèòìû ïëàíèðîâàíèÿ çàäà÷ ìîãóò ââîäèòü íîâûå ñõåìû èçìåíåíèÿ ïðèîðèòåòîâ. Íàïðèìåð, â ñèñòåìå OS-9 ïðèîðèòåòû îæèäàþùèõ çàäà÷ óâåëè÷èâàþòñÿ äëÿ èçáåæàíèÿ ñëèøêîì áîëüøèõ âðåìåí îæèäàíèÿ.
Ïðèìåð UNIX ñèñòåìû ñ ôèêñèðîâàííûìè ïðèîðèòåòàìè: ïóñòü ãîòîâàÿ çàäà÷à T1 èìååò
ïðèîðèòåò 1 , ãîòîâàÿ çàäà÷à T2 èìååò ïðèîðèòåò 5 . Òîãäà çàäà÷à T1 ïîëó÷èò 5=6 ïðîöåññîðíîãî âðåìåíè, à çàäà÷à T2 1=6 ,
Îïðåäåëåíèå. Ñèòóàöèþ, êîãäà áîëåå ïðèîðèòåòíàÿ çàäà÷à áëîêèðîâàíà ìåíåå ïðèîðèòåòíîé, âëàäåþùåé ðàçäåëÿåìûì ðåñóðñîì, òðåáóåìûì ïðèîðèòåòíîé çàäà÷å, íàçûâàþò
èíâåðñèåé ïðèîðèòåòîâ. Âñå ÎÑÐÂ, îñóùåñòâëÿþùèå ïëàíèðîâàíèå çàäà÷ íà îñíîâå èõ
ïðèîðèòåòîâ, èñïîëüçóþò òå èëè èíûå ìåõàíèçìû áîðüáû ñ ýòèì ÿâëåíèåì. Íàèáîëåå ÷àñòî
èñïîëüçóþò ìåõàíèçì ò.í. íàñëåäîâàíèÿ ïðèîðèòåòîâ, êîãäà çàäà÷à, âëàäåþùàÿ ðàçäåëÿåìûì ðåñóðñîì âðåìåííî ïîëó÷àåò ïðèîðèòåò áîëåå ïðèîðèòåòíîé çàäà÷è, îæèäàþùåé ýòîò
ðåñóðñ. Ïðèîðèòåò âîçâðàùàåòñÿ ê ïðåæíåìó çíà÷åíèþ, êîãäà çàäà÷à îñâîáîæäàåò ðàçäåëÿåìûé ðåñóðñ.
6.1.2. Ñòðàòåãèè ïëàíèðîâàíèÿ çàäà÷
Ðàññìîòðèì ñïîñîáû, êîòîðûìè ïëàíèðîâùèê âûáèðàåò î÷åðåäíóþ çàäà÷ó äëÿ ïåðåäà÷è
íà âûïîëíåíèå ïðîöåññîðó. Íèæå ìû âíà÷àëå ðàññìîòðèì ÷èñòûå ñïîñîáû, îáû÷íî ïðèìåíÿåìûå òîëüêî â ñî÷åòàíèè ñ äðóãèìè.
Î÷åðåäü îæèäàíèÿ òèïà FIFO: ïåðâîé áóäåò èñïîëíåíà ïåðâîé ïîñòóïèâøàÿ çàäà÷à.
Î÷åðåäü îæèäàíèÿ, îòñîðòèðîâàííàÿ ïî âðåìåíè èñïîëíåíèÿ çàäà÷:
áóäåò èñïîëíåíà çàäà÷à, èñïîëíÿâøàÿñÿ äî ýòîãî ñàìîå êîðîòêîå âðåìÿ.
Íåñêîëüêî î÷åðåäåé îæèäàíèÿ
Î÷åðåäü îæèäàíèÿ, îòñîðòèðîâàííàÿ ïî ïðèîðèòåòó çàäà÷:
ïåðâîé
DR
(îäíîãî èç ïðèâåäåííûõ âûøå òèïîâ): ïîñòóïèâøàÿ çàäà÷à ïîïàäàåò â îäíó èç î÷åðåäåé â çàâèñèìîñòè îò ïðèîðèòåòà çàäà÷è, âûáîðêà
ïðîèçâîäèòñÿ èç ãîëîâû ïåðâîé î÷åðåäè, åñëè ïîñëåäíÿÿ ïóñòà, òî âûáèðàåòñÿ ãîëîâà
âòîðîé î÷åðåäè è ò.ä.; ÷àñòî çàäà÷è â ðàçíûõ î÷åðåäÿõ ïîëó÷àþò ðàçíûé êâàíò âðåìåíè
â çàâèñèìîñòè îò íîìåðà î÷åðåäè (ïåðâàÿ î÷åðåäü ìåíüøèé êâàíò, òàê êàê çàäà÷è â
íåé ïîëó÷àþò äîñòóï ê ïðîöåññîðó ÷àùå).
ïîëíåíà çàäà÷à, èìåþùàÿ íàèâûñøèé ïðèîðèòåò.
ïåðâîé áóäåò èñ-
 UNIX ñèñòåìàõ ïðèìåíÿåòñÿ ñëåäóþùèé ñïîñîá ïëàíèðîâàíèÿ. Âñå ïðîöåññîðíîå âðåìÿ
ðàçáèòî íà êâàíòû ôèêñèðîâàííîé äëèíû. Âñå ãîòîâûå çàäà÷è ïîëó÷àò ñâîé êâàíò âðåìåíè,
íî ÷àñòîòà ýòîãî çàâèñèò îò îáùåãî êîëè÷åñòâà ãîòîâûõ çàäà÷ è èõ ïðèîðèòåòà. Èçíà÷àëüíî çàäà÷à ïîëó÷àåò âûñîêèé ïðèîðèòåò. Åñëè â òå÷åíèå ñâîåãî êâàíòà çàäà÷à èñïîëüçóåò
ïðîöåññîð (íå áëîêèðóåòñÿ ñ ñàìîãî íà÷àëà), òî åå ïðèîðèòåò íå ìåíÿåòñÿ èëè äàæå ïîâûøàåòñÿ. Ñ äðóãîé ñòîðîíû, åñëè çàäà÷à èñïîëüçóåò ñâîé êâàíò ïîëíîñòüþ (íå áëîêèðóåòñÿ äî
åãî îêîí÷àíèÿ), òî åå ïðèîðèòåò ïîíèæàåòñÿ. Òàêàÿ ñòðàòåãèÿ îáåñïå÷èâàåò âûñîêóþ ñðåäíþþ ïðîèçâîäèòåëüíîñòü ñèñòåìû è áûñòðîå âðåìÿ ðåàêöèè äëÿ èíòåðàêòèâíûõ ïðîãðàìì
(òèïà òåêñòîâûõ ðåäàêòîðîâ), íî àáñîëþòíî íå ãîäèòñÿ äëÿ ñèñòåì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ïðîöåññîðíîå âðåìÿ, ïîëó÷àåìîå çàäà÷åé, çàâèñèò îò êîëè÷åñòâà äðóãèõ çàäà÷ è èõ
àêòèâíîñòè.
 ñèñòåìàõ ðåàëüíîãî âðåìåíè îáû÷íî ïðèìåíÿåòñÿ ñëåäóþùèé àëãîðèòì ïëàíèðîâàíèÿ.
Çàäà÷è èìåþò ôèêñèðîâàííûå ïðèîðèòåòû, êîòîðûå ìîãóò äèíàìè÷åñêè ìåíÿòüñÿ ñàìîé çàäà÷åé èëè ïëàíèðîâùèêîì. Ïðîöåññîð ïîëó÷àåò çàäà÷à, èìåþùàÿ ñàìûé âûñîêèé ïðèîðèòåò.
Åñëè òàêàÿ çàäà÷à íå îäíà (íàïðèìåð, íå âñå çàäà÷è èìåþò ðàçíûé ïðèîðèòåò), òî ñðåäè çàäà÷ ñ ñàìûì âûñîêèì ïðèîðèòåòîì îðãàíèçóåòñÿ ïëàíèðîâàíèå ñ èçìåíåíèåì ïðèîðèòåòà ïî
ñõåìå round robin (òàê íàçûâàåìàÿ ñõåìà RRS, round robin scheduling).
Ïîäîáíàÿ ñõåìà àâòîìàòè÷åñêè îáåñïå÷èâàåò preemtion çàäà÷à ñ ëþáûì ïðèîðèòåòîì
(âêëþ÷àÿ ÿäðî ñèñòåìû) ìîæåò áûòü ïðåðâàíà çàäà÷åé ñ áîëåå âûñîêèì ïðèîðèòåòîì.
39
6. Óïðàâëåíèå çàäà÷àìè
6.1.3. Ïëàíèðîâàíèå ïåðèîäè÷åñêèõ çàäà÷
X
n
i=1
T
Áîëüøèíñòâî çàäà÷ â ñèñòåìàõ ðåàëüíîãî âðåìåíè ïåðèîäè÷åñêèå, àêòèâèçèðóåìûå ñèãíàëîì òàéìåðà èëè äàò÷èêà. Äëÿ òàêèõ çàäà÷ ðàçðàáîòàíû ñïåöèàëüíûå ïðèåìû ðàçäåëåíèÿ
âðåìåíè.
Î÷åâèäíî, ÷òî â îäíîïðîöåññîðíîé ñèñòåìå äîëæíî áûòü âûïîëíåíî ñîîòíîøåíèå
Ri
Ti
1
<
;
AF
ãäå Ti è Ri ñîîòâåòñòâåííî ïåðèîä è ìàêñèìàëüíîå âðåìÿ ðàáîòû çàäà÷è i , n êîëè÷åñòâî çàäà÷ â ñèñòåìå. Ëþáàÿ ñõåìà ïëàíèðîâàíèÿ äîëæíà îáåñïå÷èâàòü âûïîëíåíèå ýòîãî
ñîîòíîøåíèÿ.
 1973ã. Liu è Layland ïðåäëîæèëè ìåòîä àíàëèçà ïåðèîäè÷åñêèõ çàäà÷ â ÎÑÐÂ, íàçâàííûé RMA (Rate Monotonic Analysis), è ñîîòâåòñòâóþùóþ ñõåìó ïëàíèðîâàíèÿ, íàçâàííóþ
RMS (Rate Monotonic Scheduling). Â èñõîäíîì âàðèàíòå â ýòîé ñõåìå ïðåäïîëàãàåòñÿ, ÷òî
âñå çàäà÷è â ñèñòåìå ïåðèîäè÷åñêèå è ìåæäó íèìè îòñóòñòâóåò âçàèìîäåéñòâèå. Ïðèîðèòåò
çàäà÷è â RMS îáðàòíî ïðîïîðöèîíàëåí ïåðèîäó, ò.å. çàäà÷à èìååò òåì âûøå ïðèîðèòåò, ÷åì
êîðî÷å åå ïåðèîä. Ïðè ýòîì äëÿ îáåñïå÷åíèÿ ñòàáèëüíîñòè ðàáîòû ñèñòåìû äîëæíî áûòü
âûïîëíåíî ñîîòíîøåíèå
X
n
i=1
Ri
Ti
(21=n 1)
< n
:
Îòìåòèì, ÷òî äëÿ ðåàëèçàöèè ñõåìû RMS òðåáóåòñÿ, ÷òîáû ïðèîðèòåòû ó âñåõ çàäà÷ áûëè
ðàçëè÷íûìè.
 èñõîäíîì âàðèàíòå RMA èñïîëüçóåòñÿ íåðåàëèñòè÷íîå ïðåäïîëîæåíèå î íåçàâèñèìîñòè
âñåõ çàäà÷. Ïîýòîìó Liu è Layland ðàñøèðèëè RMA íà îáùèé ñëó÷àé.
Åñëè ìåæäó çàäà÷àìè åñòü çàâèñèìîñòü, òî íåîáõîäèìî ïðèíèìàòü ìåðû äëÿ áîðüáû ñ èíâåðñèåé ïðèîðèòåòîâ. Liu è Layland ïðåäëîæèëè èñïîëüçîâàòü PCP (Priority Celling Protocol).
Îñíîâíûå ñîñòàâëÿþùèå ïðîòîêîëà:
áëîêèðîâêà ðåñóðñà íåâîçìîæíà, åñëè óðîâåíü åãî ïðèîðèòåòíîñòè âûøå, ÷åì óðîâåíü
ïðèîðèòåòíîñòè çàïðîñèâøåãî áëîêèðîâêó ïðèëîæåíèÿ;
DR
êàæäîìó ðàçäåëÿåìîìó ðåñóðñó è êàæäîìó ïðèëîæåíèþ (íàáîðó çàäà÷) ïðèïèñàí óðîâåíü ïðèîðèòåòíîñòè (íå ïóòàòü ñ ïðèîðèòåòîì);
ïðèîðèòåò áëîêèðóþùèõ (ò.å. âëàäåþùèõ ðåñóðñîì) çàäà÷ âðåìåííî óâåëè÷èâàåòñÿ.
Îòìåòèì, ÷òî ÷àùå èñïîëüçóåòñÿ ïðîñòîé ìåõàíèçì íàñëåäîâàíèÿ ïðèîðèòåòîâ (ñì. âûøå).
Ïðè óñëîâèè ïðèìåíåíèÿ ýòîãî ïðîòîêîëà Liu è Layland ïîêàçàëè, ÷òî ïëàíèðîâàíèå ñèíõðîííûõ çàäà÷ äîëæíî óäîâëåòâîðÿòü äëÿ êàæäîãî k ñëåäóþùåìó óñëîâèþ
X
k
i=1
Ri
Ti
+
Ak
Tk
(21=k 1)
< n
;
ãäå Ak ýòî ìàêñèìàëüíîå âðåìÿ îæèäàíèÿ çàäà÷è k , êîòîðîå ÿâëÿåòñÿ ñóììîé âðåìåí,
ïðîâåäåííûõ çàäà÷àìè ñ ìåíüøèì ïðèîðèòåòîì â êðèòè÷åñêèõ ñåêöèÿõ.
6.1.4. Ðàçðàáîòêà õîðîøî ïëàíèðóåìûõ çàäà÷
Êàêèì áû óìíûì íå áûë àëãîðèòì íàçíà÷åíèÿ ïðèîðèòåòîâ è ïëàíèðîâàíèÿ íåâåðíî
íàïèñàííàÿ çàäà÷à ìîæåò èñïîðòèòü îáùóþ çàãðóæåííîñòü ñèñòåìû. Ðàññìîòðèì, íàïðèìåð,
ñëåäóþùóþ ñèñòåìó. Ïóñòü â ñèñòåìå åñòü äâà âõîäà A1 , B1 è äâà âûõîäà A2 , B2 . Äâå
çàäà÷è T1 , T2 çàíèìàþòñÿ ïîëó÷åíèåì äàííûõ ñ âõîäà, èõ ïðåîáðàçîâàíèåì è ïåðåäà÷åé íà
ñîîòâåòñòâóþùèé âûõîä. Êàê áóäåò ðàñïðåäåëåíî âðåìÿ ìåæäó ýòèìè äâóìÿ çàäà÷àìè?
40
6.2. Ïåðåêëþ÷åíèå êîíòåêñòà
AF
T
Ïðè èñïîëüçîâàíèè êëàññè÷åñêîãî ïîëèíãà (polling), êîãäà çàäà÷è ïîñòîÿííî îïðàøèâàþò
âõîä íà íàëè÷èå äàííûõ, âñå ïðîöåññîðíîå âðåìÿ ðàçäåëÿåòñÿ ìåæäó íèìè.
Ïðè ýòîì âî âðåìÿ îáðàáîòêè äàííûõ äëÿ ïåðâîé çàäà÷è äàííûå âòîðîé ìîãóò áûòü ïîòåðÿíû, ïîñêîëüêó îíè íå áûëè âçÿòû âîâðåìÿ. Åñëè æå òðåáóåòñÿ çàïóñòèòü åùå îäíó çàäà÷ó
T3 , òî âðåìÿ äëÿ íåå äîëæíî çàâèñåòü îò òîãî, áûëè ëè äàííûå íà âõîäå çàäà÷ T1 èëè
T2 (ïîñêîëüêó îò ýòîãî çàâèñèò âðåìÿ èõ ðàáîòû è, ñîîòâåòñòâåííî, âðåìÿ, îñòàâøååñÿ äî
ñëåäóþùåãî çàïðîñà äàííûõ).
Îäíàêî, ìû âñå ðàâíî èìååì òðè ïîñòîÿííî ðàáîòàþùèå çàäà÷è. Íàèëó÷øåå ðåøåíèå äëÿ
ïëàíèðîâàíèÿ: 3 ïðîöåññîðà, íî ýòî ñëèøêîì äîðîãî. Åñëè æå ðàçäåëÿòü âðåìÿ ìåæäó ýòèìè
çàäà÷àìè, òî ñèñòåìà áóäåò èñïîëüçîâàòü 2=3 ïðîöåññîðíîãî âðåìåíè, äàæå åñëè âõîäíûõ
äàííûõ íåò.
Ñ òî÷êè çðåíèÿ ñèñòåìû ðåàëüíîãî âðåìåíè íàèëó÷øåå ðåøåíèå ýòî àêòèâèçàöèÿ çàäà÷
T1 è T2 ïðåðûâàíèåì ïî ãîòîâíîñòè äàííûõ.
6.2. Ïåðåêëþ÷åíèå êîíòåêñòà
Êîíòåêñò çàäà÷è ýòî íàáîð äàííûõ, çàäàþùèõ ñîñòîÿíèå ïðîöåññîðà ïðè âûïîëíåíèè çàäà÷è. Îáû÷íî ñîâïàäàåò ñ íàáîðîì ðåãèñòðîâ, äîñòóïíûõ äëÿ èçìåíåíèÿ ïðèêëàäíîé çàäà÷å.
 ñèñòåìàõ ñ âèðòóàëüíîé ïàìÿòüþ ìîæåò âêëþ÷àòü ðåãèñòðû, îòâå÷àþùèå çà òðàíñëÿöèþ
âèðòóàëüíîãî àäðåñà â ôèçè÷åñêèé (îáû÷íî äîñòóïíû íà çàïèñü òîëüêî îïåðàöèîííîé ñèñòåìå).
Ïåðåêëþ÷åíèå çàäà÷ ýòî ïåðåõîä ïðîöåññîðà îò èñïîëíåíèÿ îäíîé çàäà÷è ê äðóãîé.
Ìîæåò áûòü èíèöèèðîâàíî:
1. ïëàíèðîâùèêîì çàäà÷ (íàïðèìåð, îñâîáîäèëñÿ ðåñóðñ è â î÷åðåäü ãîòîâûõ çàäà÷ ïîïàëà
îæèäàâøàÿ åãî ïðèîðèòåòíàÿ çàäà÷à),
2. ïðåðûâàíèåì (àïïàðàòíûì ïðåðûâàíèåì) (íàïðèìåð, çàïðîñ íà îáñëóæèâàíèå îò âíåøíåãî óñòðîéñòâà),
3. èñêëþ÷åíèåì (ïðîãðàììíûì ïðåðûâàíèåì) (íàïðèìåð, ñèñòåìíûé âûçîâ).
DR
Ïîñêîëüêó êîíòåêñò ïîëíîñòüþ îïðåäåëÿåò, êàêàÿ çàäà÷à áóäåò âûïîëíÿòüñÿ, òî çà÷àñòóþ
òåðìèíû ïåðåêëþ÷åíèå çàäà÷ è ïåðåêëþ÷åíèå êîíòåêñòà óïîòðåáëÿþò êàê ñèíîíèìû.
Îïðåäåëåíèå. Äèñïåò÷åð (dispatcher) ýòî ìîäóëü (ïðîãðàììà), îòâå÷àþùèé çà ïåðåêëþ÷åíèå êîíòåêñòà.
Ïðè ïåðåêëþ÷åíèè çàäà÷ äèñïåò÷åðó íåîáõîäèìî:
1. êîððåêòíî îñòàíîâèòü ðàáîòàþùóþ çàäà÷ó; äëÿ ýòîãî
à) âûïîëíèòü èíñòðóêöèè òåêóùåé çàäà÷è, óæå çàãðóæåííûå â ïðîöåññîð, íî åùå íå
âûïîëíåííûå (ñîâðåìåííûå ïðîöåññîðû èìåþò âíóòðè ñåáÿ êîíâåéåðû èíñòðóêöèé,
êóäà ìîãóò çàãðóæàòüñÿ áîëåå 10 èíñòðóêöèé, íåêîòîðûå èç êîòîðûõ ìîãóò áûòü
âåñüìà ñëîæíûìè, íàïðèìåð, çàïèñàòü â ïàìÿòü 32 ðåãèñòðà), îáû÷íî ýòî äåëàåòñÿ
àïïàðàòíî;
á) ñîõðàíèòü â îïåðàòèâíîé ïàìÿòè ðåãèñòðû òåêóùåé çàäà÷è;
2. íàéòè, ïîäãîòîâèòü è çàãðóçèòü çàòðåáîâàííóþ çàäà÷ó (îáðàáîò÷èê ïðåðûâàíèé â ýòîì
ñëó÷àå òðåáóåòñÿ åùå óñòàíîâèòü èñòî÷íèê ïðåðûâàíèÿ);
3. çàïóñòèòü íîâóþ çàäà÷ó, äëÿ ýòîãî
à) âîññòàíîâèòü èç îïåðàòèâíîé ïàìÿòè ðåãèñòðû íîâîé çàäà÷è (ñîõðàíåííûå ðàíåå,
åñëè îíà äî ýòîãî óæå ðàáîòàëà);
á) çàãðóçèòü â ïðîöåññîð èíñòðóêöèè íîâîé çàäà÷è (ñîâðåìåííûå ïðîöåññîðû íà÷èíàþò âûïîëíÿòü èíñòðóêöèè òîëüêî ïîñëå çàãðóçêè êîíâåéåðà), ýòà ôàçà äåëàåòñÿ
àïïàðàòíî.
41
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
6.3. Ïðåðûâàíèÿ
T
Êàæäàÿ èç ýòèõ ñòàäèé âíîñèò ñâîé âêëàä â çàäåðæêó ïðè ïåðåêëþ÷åíèè êîíòåêñòà. Ïîñêîëüêó ëþáîå ïðèëîæåíèå ðåàëüíîãî âðåìåíè äîëæíî îáåñïå÷èòü âûäà÷ó ðåçóëüòàòà â çàäàííîå
âðåìÿ, òî ýòà çàäåðæêà äîëæíà áûòü ìàëà, äåòåðìèíèðîâàíà è èçâåñòíà. Ýòî ÷èñëî ÿâëÿåòñÿ
îäíîé èç âàæíåéøèõ õàðàêòåðèñòèê ÎÑÐÂ.
Äåòåðìèíèðîâàííîñòü îñîáåííî âàæíà ïðè îáðàáîòêå ïðåðûâàíèé, ïîñêîëüêó èõ ìîæåò
áûòü íåñêîëüêî â î÷åðåäè ïðåðûâàíèé, è îáðàáîò÷èê äîëæåí îáñëóæèòü èõ âñå. Ïðèëîæåíèå
äîëæíî çíàòü, ñêîëüêî âðåìåíè ýòî çàéìåò â íàèõóäøåì ñëó÷àå.
AF
Ïðåðûâàíèÿ ÿâëÿþòñÿ îñíîâíûì èñòî÷íèêîì ñîîáùåíèÿ âíåøíèì óñòðîéñòâîì î ãîòîâíîñòè äàííûõ èëè íåîáõîäèìîñòè ïåðåäà÷è äàííûõ. Ïî ñàìîìó íàçíà÷åíèþ ñèñòåì ðåàëüíîãî
âðåìåíè, ïðåðûâàíèÿ ÿâëÿþòñÿ îäíèì èç îñíîâíûõ îáúåêòîâ â ÎÑÐÂ.
Âðåìÿ ðåàêöèè íà ïðåðûâàíèå ýòî âðåìÿ ïåðåêëþ÷åíèÿ êîíòåêñòà îò òåêóùåé çàäà÷è ê
ïðîöåäóðå îáðàáîòêè ïðåðûâàíèÿ.
 ìíîãîçàäà÷íûõ ñèñòåìàõ âðåìÿ îæèäàíèÿ ïðåðûâàíèÿ (ñîáûòèÿ) ìîæåò áûòü èñïîëüçîâàíî äðóãîé çàäà÷åé.
Ïðåðûâàíèå ìîæåò ïðîèçîéòè âî âðåìÿ îáðàáîòêè ñèñòåìíîãî âûçîâà è âî âðåìÿ êðèòè÷åñêîé ñåêöèè.
7. Óïðàâëåíèå ïàìÿòüþ
Èñïîëüçîâàíèå âèðòóàëüíîé ïàìÿòè ÿâëÿåòñÿ íàñòîëüêî óäîáíûì ñðåäñòâîì ðàçäåëåíèÿ
çàäà÷ è îáåñïå÷åíèÿ èì íåïðåðûâíîãî àäðåñíîãî ïðîñòðàíñòâà, íà÷èíàþùåãîñÿ ñ ôèêñèðîâàííîãî àäðåñà, ÷òî îíî èñïîëüçóåòñÿ âî ìíîãèõ ñèñòåìàõ.
Îäíàêî, íàëè÷èå âèðòóàëüíîé ïàìÿòè ïðîòèâîðå÷èò îñíîâíûì ïðèíöèïàì ÎÑÐÂ.
DR
Äàæå åñëè âñå ñòðàíèöû âèðòóàëüíîé ïàìÿòè íàõîäÿòñÿ â ôèçè÷åñêîé ïàìÿòè, çàäåðæêà, âíîñèìàÿ ïðè òðàíñëÿöèè àäðåñà, íå äåòåðìèíèðîâàíà. Îíà çàâèñèò îò òîãî, áûëè ëè
óæå îáðàùåíèÿ ê äàííîé ñòðàíèöå (ò.å. íàõîäèòñÿ ëè îíà â êýøå òðàíñëÿöèè ñòðàíèö,
íàçûâàåìîì TLB, Translation Look-aside Buffers).
Åñëè æå íå âñå ñòðàíèöû âèðòóàëüíîé ïàìÿòè íàõîäÿòñÿ â ôèçè÷åñêîé ïàìÿòè, òî çàäåðæêà, âíîñèìàÿ ïðè òðàíñëÿöèè àäðåñà, íå òîëüêî íå äåòåðìèíèðîâàíà, íî è ìîæåò
áûòü î÷åíü áîëüøîé (âêëþ÷àåò âðåìÿ çàãðóçêè ñòðàíèöû ñ äèñêà). Äëÿ óìåíüøåíèÿ
ýòîé ïðîáëåìû, ÎÑÐÂ ïðåäîñòàâëÿþò ñïåöèàëüíûå ñèñòåìíûå âûçîâû, çàêðåïëÿþùèå
óêàçàííûå ñòðàíèöû â ôèçè÷åñêîé ïàìÿòè (ò.å. çàïðåùàþùèå ïåðåíîñèòü èõ íà äèñê).
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
Ðàññìîòðèì íåêîòîðûå èç ñèñòåì ðåàëüíîãî âðåìåíè. Ïî ñïîñîáó ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ èõ ðàçäåëÿþò íà ñëåäóþùèå êàòåãîðèè:
Self-Hosted ÎÑРýòî ñèñòåìû, â êîòîðûõ ïîëüçîâàòåëè ìîãóò ðàçðàáàòûâàòü ïðèëîæåíèÿ, ðàáîòàÿ â ñàìîé ÎÑÐÂ. Îáû÷íî ýòî ïðåäïîëàãàåò, ÷òî ÎÑРïîääåðæèâàåò
ôàéëîâóþ ñèñòåìó, ñðåäñòâà ââîäà-âûâîäà, ïîëüçîâàòåëüñêèé èíòåðôåéñ, èìåþòñÿ êîìïèëÿòîðû, îòëàä÷èê, ñðåäñòâà àíàëèçà ïðîãðàìì, òåêñòîâûå ðåäàêòîðû, ðàáîòàþùèå
ïîä óïðàâëåíèåì ÎÑÐÂ.
Äîñòîèíñòâîì òàêèõ ñèñòåì ÿâëÿåòñÿ áîëåå ïðîñòîé è íàãëÿäíûé ìåõàíèçì ñîçäàíèÿ è
çàïóñêà ïðèëîæåíèé, êîòîðûå ðàáîòàþò íà òîé æå ìàøèíå, ÷òî è ïîëüçîâàòåëü. Íåäîñòàòêîì ÿâëÿåòñÿ òî, ÷òî ïðîìûøëåííîìó êîìïüþòåðó âî âðåìÿ åãî ðåàëüíîé ýêñïëóàòàöèè ÷àñòî âîîáùå íå òðåáóåòñÿ ïîëüçîâàòåëüñêèé èíòåðôåéñ è âîçìîæíîñòü çàïóñêà
42
8.1. Êëàññè÷åñêèå ñèñòåìû
T
òÿæåëîâåñíûõ ïðîãðàìì âðîäå êîìïèëÿòîðà. Ñëåäîâàòåëüíî, áîëüøèíñòâî èç îïèñàííûõ âûøå âîçìîæíîñòåé ÎÑÐÂ ïðîñòî íå èñïîëüçóþòñÿ è òîëüêî çðÿ çàíèìàþò ïàìÿòü
è äðóãèå ðåñóðñû êîìïüþòåðà.
Îáû÷íî self-hosted ÎÑРïðèìåíÿþòñÿ íà îáû÷íûõ êîìïüþòåðàõ ïðîìûøëåííîãî èñïîëíåíèÿ (ñì. îïèñàíèå îáîðóäîâàíèÿ íà ñ. 8).
Host/Target ÎÑÐÂ ýòî ñèñòåìû, â êîòîðûõ îïåðàöèîííàÿ ñèñòåìà è(èëè) êîìïüþòåð, íà êîòîðîì ðàçðàáàòûâàþòñÿ ïðèëîæåíèÿ (host), è îïåðàöèîííàÿ ñèñòåìà è(èëè)
êîìïüþòåð, íà êîòîðîì çàïóñêàþòñÿ ïðèëîæåíèÿ (target), ðàçëè÷íû. Ñâÿçü ìåæäó êîìïüþòåðàìè îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ïîñëåäîâàòåëüíîãî ñîåäèíåíèÿ (COM ïîðòà),
ethernet, îáùåé øèíû VME èëè compact PCI.  êà÷åñòâå host ñèñòåìû îáû÷íî âûñòóïàþò êîìïüþòåð ïîä óïðàâëåíèåì UNIX èëè Windows NT, â êà÷åñòâå target ñèñòåìû ïðîìûøëåííûé èëè âñòðàèâàåìûé êîìïüþòåð ïîä óïðàâëåíèåì ÎÑÐÂ. Áûâàþò ñèñòåìû, â êîòîðûõ íà îäíîì êîìïüþòåðå ðàáîòàþò äâå îïåðàöèîííûõ ñèñòåìû: îáû÷íàÿ
è ðåàëüíîãî âðåìåíè.
AF
Äîñòîèíñòâîì òàêèõ ñèñòåì ÿâëÿåòñÿ èñïîëüçîâàíèå âñåõ ðåñóðñîâ îáû÷íîé ñèñòåìû
(òàêèõ, êàê ãðàôè÷åñêèé èíòåðôåéñ, ôàéëîâàÿ ñèñòåìà, áûñòðûé ïðîöåññîð è áîëüøîé îáúåì îïåðàòèâíîé ïàìÿòè) äëÿ ñîçäàíèÿ ïðèëîæåíèé è óìåíüøåíèå ðàçìåðîâ
ÎÑРçà ñ÷åò âêëþ÷åíèÿ òîëüêî íóæíûõ ïðèëîæåíèþ êîìïîíåíò. Íåäîñòàòêîì ÿâëÿåòñÿ îòíîñèòåëüíàÿ ñëîæíîñòü ïðîãðàììíûõ êîìïîíåíò: êðîññ-êîìïèëÿòîðà, óäàëåííîãî
çàãðóç÷èêà è îòëàä÷èêà, è ò.ä.
Îòìåòèì, ÷òî, ñ îäíîé ñòîðîíû, ðîñò ìîùíîñòè ïðîìûøëåííûõ êîìïüþòåðîâ ïîçâîëÿåò èñïîëüçîâàòü self-hosted ñèñòåìû íà áîëüøåì ÷èñëå âû÷èñëèòåëüíûõ ñèñòåì. Ñ äðóãîé ñòîðîíû,
óâåëè÷èâàþùååñÿ ðàñïðîñòðàíåíèå âñòðàèâàåìûõ ñèñòåì (â ðàçíîîáðàçíîì ïðîìûøëåííîì
è áûòîâîì îáîðóäîâàíèè), ðàñøèðÿåò ñôåðó ïðèìåíåíèÿ host/target ñèñòåì (ïîñêîëüêó ïðè
áîëüøèõ îáúåìàõ âûïóñêà öåíà ñèñòåìû ÿâëÿåòñÿ îïðåäåëÿþùèì ôàêòîðîì).
 çàâèñèìîñòè îò ïðîèñõîæäåíèÿ, ÎÑРðàçäåëÿþò íà ñëåäóþùèå ãðóïïû.
Îáû÷íûå ÎÑ,
èñïîëüçóåìûå â êà÷åñòâå ÎÑÐÂ. ×àñòî ê îáû÷íûì ÎÑ äîáàâëÿþò äîïîëíèòåëüíûå ìîäóëè, ðåàëèçóþùèå ïîääåðæêó ñïåöèôè÷åñêîãî îáîðóäîâàíèÿ (íàïðèìåð, øèíû VME), à òàêæå ïëàíèðîâàíèå çàäà÷ è îáðàáîòêó ïðåðûâàíèé â ñîîòâåòñòâèå
ñ òðåáîâàíèÿìè ê ÎÑÐÂ è ñãëàæèâàþùèå íåâîçìîæíîñòü ïðåðâàòü ÿäðî ñèñòåìû. Âñå
òàêèå ñèñòåìû îòíîñÿòñÿ ê ðàçðÿäó self-hosted.
DR
ñïåöèàëèçèðîâàííûå îïåðàöèîííûå ñèñòåìû äëÿ ïðèìåíåíèÿ â
çàäà÷àõ ðåàëüíîãî âðåìåíè. Áûâàþò êàê self-hosted, òàê è host/target (áîëüøèíñòâî),
íåêîòîðûå ÎÑÐÂ ïîääåðæèâàþò îáå ìîäåëè.
Ñîáñòâåííî ÎÑÐÂ
Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑРýòî ÎÑÐÂ, ðàçðàáîòàííûå äëÿ êîíêðåòíîãî ìèêðîêîíòðîëëåðà åãî ïðîèçâîäèòåëåì. ×àñòî íå ÿâëÿþòñÿ ïîëíîöåííûìè ÎÑ,
à ïðåäñòàâëÿþò åäèíûé ìîäóëü ñ ïðèëîæåíèåì è îáåñïå÷èâàþò òîëüêî íåîáõîäèìûé
ìèíèìóì ôóíêöèîíàëüíîñòè. Âñå òàêèå ñèñòåìû îòíîñÿòñÿ ê ðàçðÿäó host/target.
Ïî âíóòðåííåìó ñòðîåíèþ ðàçëè÷àþò êëàññè÷åñêèå è îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû.
8.1. Êëàññè÷åñêèå ñèñòåìû
Ðàññìîòðèì ñèñòåìû, îñíîâàííûå íà êëàññè÷åñêîì ïðîöåäóðíîì ïîäõîäå ê ïðîãðàììèðîâàíèþ.
8.1.1. CHORUS
Ñèñòåìà CHORUS âûïóñêàåòñÿ ôèðìîé Chorus Systeme (Saint Quentin Yvelines, France).
 íîÿáðå 1997ã. ôèðìà ïðèîáðåòåíà êîìïàíèåé Sun Microsystems (Menlo Park, CA, USA).
Îñíîâíûå õàðàêòåðèñòèêè:
43
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
íà îñíîâå ìèêðîÿäðà
ñîáñòâåííûé è POSIX 1003
Ìíîãîçàäà÷íîñòü:
POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü)
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå, FIFO; preemptive ÿäðî
AF
host-target (CHORUS/Micro è CHORUS/ClassiX) è self-hosted (CHORUS/MiX)
T
1.
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
10.
CHORUS/UNIX/Windows
Intel 80x86, Motorola 68xxx, Motorola 88xxx, SPARC, PowerPC,
T805, MIPS, PA-RISC, YMP (Cray), DEC Alpha
ïîñëåäîâàòåëüíûé êàíàë è ethernet
10Kb äëÿ CHORUS/Micro, 50Kb äëÿ CHORUS/ClassiX
POSIX 1003 (ñåìàôîðû, mutex, condvar)
Ñðåäñòâà ðàçðàáîòêè:
CHORUS/Harmony èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++, âêëþ÷àþùàÿ
êîìïèëÿòîðû, îòëàä÷èê, àíàëèçàòîð
CHORUS/JaZZ âèðòóàëüíàÿ ìàøèíà Java
8.1.2. LynxOS
Ñèñòåìà LynxOS âûïóñêàåòñÿ ôèðìîé Lynx Real Time Systems (Los Gatos, USA). Îñíîâíûå õàðàêòåðèñòèêè:
Òèï:
self-hosted
DR
1.
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
POSIX 1003
Ìíîãîçàäà÷íîñòü:
POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü)
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
255
Ïëàíèðîâàíèå:
FIFO, round robin, Quantum; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
44
íà îñíîâå ìèêðîÿäðà
Intel 80x86, Motorola 68xxx, SPARC, PowerPC
ïîëíîé ñèñòåìû: 256Kb
óñå÷åííîé ñèñòåìû: 124Kb
òîëüêî ÿäðà: 33Kb
8.1. Êëàññè÷åñêèå ñèñòåìû
Ñèñòåìó ìîæíî çàïèñàòü â ROM.
10.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
Ñðåäñòâà ðàçðàáîòêè:
POSIX 1003 (ñåìàôîðû, mutex, condvar)
T
9.
Êîìïëåêòû ðàçðàáîò÷èêà, âêëþ÷àþùèå êîìïèëÿòîð C/C++, îòëàä÷èê, àíàëèçàòîð
X Windows/Motif äëÿ Lynx
TotalView ìíîãîïðîöåññíûé îòëàä÷èê
AF
8.1.3. QNX
Ñèñòåìà QNX âûïóñêàåòñÿ ôèðìîé QNX SoftWare Systems (USA). Îñíîâíûå õàðàêòåðèñòèêè:
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
self-hosted
íà îñíîâå ìèêðîÿäðà
POSIX 1003
Ìíîãîçàäà÷íîñòü:
POSIX 1003 (ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü)
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
32
Ïëàíèðîâàíèå:
FIFO, round robin, àäàïòèâíîå; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
Intel 80x86
DR
60Kb
10.
POSIX 1003 (ñåìàôîðû, mutex, condvar)
Ñðåäñòâà ðàçðàáîòêè:
Êîìïëåêòû ðàçðàáîò÷èêà, âêëþ÷àþùèå êîìïèëÿòîð C/C++, îòëàä÷èê, àíàëèçàòîð îò QNX è íåçàâèñèìûõ ïîñòàâùèêîâ (íàïðèìåð, Watcom/SyBase);
X Windows/Motif äëÿ QNX.
8.1.4. OS-9
Ñèñòåìà OS-9 âûïóñêàåòñÿ ôèðìîé Microware (USA). Îñíîâíûå õàðàêòåðèñòèêè:
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
host-target
íà îñíîâå ìèêðîÿäðà
ñîáñòâåííûé, âûçîâû ïîõîæè íà UNIX
Ìíîãîçàäà÷íîñòü:
ìíîãîïðîöåññíîñòü
Ìíîãîïðîöåññîðíîñòü:
45
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
Óðîâíåé ïðèîðèòåòîâ:
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå, FIFO, ñïåöèàëüíûé ìåõàíèçì ïëàíèðîâàíèÿ (ñì.
ðàçäåë 6.1.1); preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
Motorola 68xxx, Intel 80x86, ARM, MIPS, PowerPC
ïîñëåäîâàòåëüíûé êàíàë è ethernet
16Kb
AF
10.
ñîáûòèÿ, . . .
UNIX/Windows
T
ðàçäåëÿåìàÿ ïàìÿòü, ñèãíàëû, ñåìàôîðû,
Ñðåäñòâà ðàçðàáîòêè:
Hawk èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè íà C/C++
PersonalJava âèðòóàëüíàÿ ìàøèíà Java
8.1.5. pSOS
Ñèñòåìà pSOS âûïóñêàåòñÿ Integrated Systems (Santa Clara, USA). Â ôåâðàëå 2000ã. ôèðìà
ïðèîáðåòåíà êîìïàíèåé Wind River Systems (Alameda, CA, USA). Îñíîâíûå õàðàêòåðèñòèêè:
1.
Òèï:
host-target
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
íà îñíîâå ìèêðîÿäðà
DR
ñîáñòâåííûé
ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
255
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
10.
UNIX/Windows
Motorola 68xxx, Intel 80x86, Intel 80960, ARM, MIPS, PowerPC
15Kb
ñåìàôîðû, mutex, ñîáûòèÿ, . . .
Ñðåäñòâà ðàçðàáîòêè:
46
Ìíîãîçàäà÷íîñòü:
Èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè íà C/C++/Ada
8.1. Êëàññè÷åñêèå ñèñòåìû
8.1.6. RTC
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
host-target (RTC) è self-hosted (RTC/PC)
ìîíîëèòíàÿ
SCEPTRE (RTC) è ñîáñòâåííûé (RTC/PC)
Ìíîãîçàäà÷íîñòü:
ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü
AF
T
Ñèñòåìà RTC (Real Time Craft) âûïóñêàåòñÿ ôèðìîé GSI-TECSI (Paris, France). Îñíîâíûå
õàðàêòåðèñòèêè:
Ìíîãîïðîöåññîðíîñòü:
äà (RTC); íåò (RTC/PC)
Óðîâíåé ïðèîðèòåòîâ:
65532
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå, FIFO; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
10.
òîëüêî Intel 80x86)
ÿùèêè)
UNIX/Windows
Intel 80x86, Motorola 68xxx, Intel 80C166, Am39K (äëÿ RTC/PC ethernet
1.5Kb (RTC); 4Kb (RTC/PC)
SCEPTRE (ñåìàôîðû, ñèãíàëû, ïî÷òîâûå
Ñðåäñòâà ðàçðàáîòêè:
Êîìïèëÿòîð C, îòëàä÷èê Watcom TRC.
8.1.7. VRTX
DR
Ñèñòåìà VRTX âûïóñêàåòñÿ ôèðìîé Ready Systems (Sunnyvale, USA). Îñíîâíûå õàðàêòåðèñòèêè:
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
host-target
ñîáñòâåííûé
Ìíîãîçàäà÷íîñòü:
ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü
Ìíîãîïðîöåññîðíîñòü:
íåò
Óðîâíåé ïðèîðèòåòîâ:
255
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
UNIX/Windows
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
Motorola 68xxx, Intel 80x86, Intel 80960, PowerPC
ïîñëåäîâàòåëüíûé êàíàë, ethernet, øèíà VME
16Kb
47
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
10.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
Ñðåäñòâà ðàçðàáîòêè:
ñåìàôîðû, î÷åðåäè, ñèãíàëû, . . .
T
9.
MasterWorks èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè
Xray ñïåöèàëèçèðîâàííûé îòëàä÷èê
Simulator Xray ýìóëÿòîð ÿäðà
8.1.8. VxWorks
AF
Ñèñòåìà VxWorks âûïóñêàåòñÿ ôèðìîé Wind River Systems (Alameda, CA, USA). Îñíîâíûå õàðàêòåðèñòèêè:
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
host-target
ìîíîëèòíàÿ
ñîáñòâåííûé è POSIX 1003
Ìíîãîçàäà÷íîñòü:
ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
256
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
Motorola 68xxx, Intel 80x86, Intel 80960, PowerPC, SPARC, Alpha,
DR
MIPS, ARM
UNIX/Windows
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
10.
ïîñëåäîâàòåëüíûé êàíàë, ethernet, øèíà VME
58Kb
...
ñåìàôîðû POSIX 1003, î÷åðåäè, ñèãíàëû,
Ñðåäñòâà ðàçðàáîòêè:
TORNADO èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++
VxSim ýìóëÿòîð äëÿ UNIX
WindView ãðàôè÷åñêèé âèçóàëèçàòîð ñîñòîÿíèÿ çàäà÷
8.2. Îáúåêòíî-îðèåíòèðîâàííûå ñèñòåìû
Ðàññìîòðèì ñèñòåìû, îñíîâàííûå íà îáúåêòíî-îðèåíòèðîâàííîì ïîäõîäå ê ðàçðàáîòêå
ïðîãðàìíîãî îáåñïå÷åíèÿ (ñì. ðàçäåë 4.1). Ê èõ ÷èñëó ìû áóäåì îòíîñèòü ñèñòåìû, íå òîëüêî
ïðåäîñòàâëÿþùèå ñðåäñòâà ðàçðàáîòêè è íàáîðû áèáëèîòåê äëÿ îáúåêòíî-îðèåíòèðîâàííûõ
ÿçûêîâ, íî è ñàìè íàïèñàííûå íà òàêèõ ÿçûêàõ.
48
8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑÐÂ
8.2.1. SoftKernel
1.
Òèï:
2.
Àðõèòåêòóðà:
3.
Ñòàíäàðò:
4.
Ñâîéñòâà êàê ÎÑÐÂ:
host-target
íà îñíîâå îáúåêòîâ-ìèêðîÿäåð
ñîáñòâåííûé
AF
T
Ñèñòåìà SoftKernel âûïóñêàåòñÿ ôèðìîé Microprocess (Courbevoie, France). Îñíîâíûå õàðàêòåðèñòèêè:
Ìíîãîçàäà÷íîñòü:
ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü
Ìíîãîïðîöåññîðíîñòü:
äà
Óðîâíåé ïðèîðèòåòîâ:
255
Ïëàíèðîâàíèå:
ïðèîðèòåòíîå, FIFO; preemptive ÿäðî
5.
ÎÑ ðàçðàáîòêè (host):
6.
Ïðîöåññîðû (target):
7.
Ëèíèè ñâÿçè host-target:
8.
Ìèíèìàëüíûé ðàçìåð:
9.
Ñðåäñòâà ñèíõðîíèçàöèè è âçàèìîäåéñòâèÿ:
10.
ÿùèêè
UNIX/Windows
Motorola 68xxx, PowerPC, Intel 80960, ARM, SPARC
ïîñëåäîâàòåëüíûé êàíàë è ethernet
40Kb
ñåìàôîðû, ñèãíàëû, ñîáûòèÿ, ïî÷òîâûå
Ñðåäñòâà ðàçðàáîòêè:
SoftWorks èíòåãðèðîâàííàÿ ñðåäà ðàçðàáîòêè C/C++
DR
8.3. Ñïåöèàëèçèðîâàííûå (÷àñòíûå) ÎÑÐÂ
Ñèñòåìû, ïðîåêòèðóåìûå ïîä êîíêðåòíóþ ìîäåëü ìèêðîêîíòðîëëåðà èëè êîíêðåòíóþ çàäà÷ó, îáëàäàþò îïðåäåëåííûìè ïðåèìóùåñòâàìè:
íàèâûñøàÿ ïðîèçâîäèòåëüíîñòü,
íàèëó÷øèé ó÷åò îñîáåííîñòåé îáîðóäîâàíèÿ,
íàèáîëüøàÿ êîìïàêòíîñòü.
Íåäîñòàòêè
áîëüøîå âðåìÿ ðàçðàáîòêè,
âûñîêàÿ ñòîèìîñòü,
íåïåðåíîñèìîñòü.
Ïðèìåðàìè òàêèõ ñèñòåì ÿâëÿþòñÿ ÎÑÐÂ, ðàçðàáîòàííûå ìíîãèìè ïðîèçâîäèòåëÿìè
ýëåêòðîííîé òåõíèêè (Sony, Sagem, . . . ), à òàêæå ñèñòåìû, ðàçðàáîòàííûå ïîä êîíêðåòíóþ
áîëüøóþ çàäà÷ó (íàïðèìåð, óïðàâëåíèå æåëåçíûìè äîðîãàìè TGV âî Ôðàíöèè).
49
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
8.4. Ñèñòåìû íà îñíîâå Linux
T
Ðàññìîòðèì ñèñòåìû íà îñíîâå Linux ñâîáîäíî ðàñïðîñòðàíÿåìîé âåðñèè ñèñòåìû UNIX.
Îíà ïîëó÷èëà çíà÷èòåëüíîå ðàñïîñòðàíåíèå íà íàñòîëüíûõ êîìïüþòåðàõ â ñèëó ñâîåé áåñïëàòíîñòè è êà÷åñòâà. Ïîÿâèâøèñü íà ìàøèíàõ ñ ïðîöåññîðàìè Intel 80x86, ñåé÷àñ îíà ïîääåðæèâàåò ïðîöåññîðû Alpha, SPARC, PowerPC, ARM, Motorola 68xxx, MIPS. Îòêðûòîñòü
èñõîäíûõ òåêñòîâ ñèñòåìû ïîçâîëÿåò ðåàëèçîâûâàòü íà åå îñíîâå ñïåöèàëèçèðîâàííûå ñèñòåìû è îáåñïå÷èâàòü ïîääåðæêó íîâîãî îáîðóäîâàíèÿ.
Ïðèñïîñîáëåíèå ñèñòåìû Linux ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè ïðîèñõîäèò ïî ñëåäóþùèì òðåì íàïðàâëåíèÿì.
AF
1. Ïîääåðæêà ñòàíäàðòîâ POSIX, êàñàþùèõñÿ ñèñòåì ðåàëüíîãî âðåìåíè. Ñòàíäàðò
POSIX 1003.1c (thread ðàáîòà ñ çàäà÷àìè) óæå ïîääåðæàí, ñòàíäàðò POSIX 1003.1b
(ðàñøèðåíèÿ ðåàëüíîãî âðåìåíè) ïîääåðæàí ëèøü ÷àñòè÷íî: ðåàëèçîâàíû ìåõàíèçìû
óïðàâëåíèÿ ïàìÿòüþ è ìåõàíèçìû ïëàíèðîâàíèÿ çàäà÷, ìåõàíèçìû æå ðàáîòû ñ òàéìåðàìè, ñèãíàëû, POSIX ñåìàôîðû è î÷åðåäè ñîîáùåíèé ïîêà íå ðåàëèçîâàíû.
2. Ïîääåðæêà ñïåöèàëüíîãî îáîðóäîâàíèÿ, âàæíåéøèì èç êîòîðûõ ÿâëÿåòñÿ øèíà
VME. Óæå ñóùåñòâóåò ïîääåðæêà ìîñòà VMEPCI. Âåäóòñÿ ðàçðàáîòêè ïî îáåñïå÷åíèþ âûïîëíåíèÿ Linux èç ÏÇÓ. Òàêæå äëÿ ñèñòåì ðåàëüíîãî âðåìåíè âàæíûì ÿâëÿåòñÿ
ïîâûøåíèå ðàçðåøåíèÿ òàéìåðà ñèñòåìû.
3. Ðåàëèçàöèÿ ìåõàíèçìà preemption äëÿ ÿäðà ñèñòåìû. Ýòîò ìåõàíèçì, ñ îäíîé
ñòîðîíû, ÿâëÿåòñÿ íåîáõîäèìûì äëÿ òîãî, ÷òîáû ñèñòåìó ìîæíî áûëî íàçûâàòü ñèñòåìîé ðåàëüíîãî âðåìåíè, à ñ äðóãîé ñòîðîíû, îí ÿâëÿåòñÿ î÷åíü ñëîæíûì äëÿ ðåàëèçàöèè. Linux, êàê è âñå UNIX ñèñòåìû, íàäîëãî çàïðåùàåò ïðåðûâàíèÿ ïðè âõîäå â ÿäðî
ñèñòåìû, è ÿâëÿåòñÿ ñóùåñòâåííî íå preemptive.
Ñóùåñòâóåò íåñêîëüêî ïðîåêòîâ ðåàëèçàöèè premption äëÿ ÿäðà Linux. Ïî ñïîñîáó ðåøåíèÿ çàäà÷è èõ ìîæíî ðàçäåëèòü íà äâå ãðóïïû.
DR
1. Ìåõàíèçì preemption ðåàëèçóåòñÿ ïóòåì ïåðåïèñûâàíèÿ ÿäðà ñèñòåìû (áëàãî îíî äîñòóïíî â èñõîäíûõ òåêñòàõ). Íà ýòîì ïóòè ìîæíî äîñòè÷ü ñàìûõ êà÷åñòâåííûõ ðåçóëüòàòîâ, íî íà äàííûé ìîìåíò çíà÷èòåëüíûõ óñïåõîâ â ýòîì ïëàíå íåò ïî ñëåäóþùèì
ïðè÷èíàì:
à) ñëèøêîì áîëüøîé îáúåì ðàáîòû, ñâÿçàííûé ñ áîëüøèì îáúåìîì ÿäðà;
á) ñëèøêîì âûñîêàÿ ñêîðîñòü èçìåíåíèÿ ÿäðà, ïðè÷åì èçìåíåíèÿ âíîñÿòñÿ, íå ó÷èòûâàÿ èíòåðåñû ðåàëüíîãî âðåìåíè.
2. Ìåõàíèçì preemption ðåàëèçóåòñÿ ïóòåì íàïèñàíèÿ ìèêðîÿäðà, îòâå÷àþùåãî çà äèñïåò÷åðèçàöèþ ïðåðûâàíèé è çàäà÷. ßäðî Linux ðàáîòàåò êàê çàäà÷à ñ íèçêèì ïðèîðèòåòîì.
Ñàìî ÿäðî ëèøü íåçíà÷èòåëüíî èçìåíåíî, äëÿ ïðåäîòâðàùåíèÿ áëîêèðîâàíèÿ èì àïïàðàòíûõ ïðåðûâàíèé. Çàäà÷è â òàêîé ñèñòåìå ðàçäåëåíû íà äâå ãðóïïû:
à) ïðîöåññû, ðàáîòàþùèå ïîä óïðàâëåíèåì òîëüêî ìèêðîÿäðà (íå èñïîëüçóþùèå
ôóíêöèè ÿäðà Linux); ýòè ïðîöåññû óäîâëåòâîðÿþò òðåáîâàíèÿì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ìîãóò ïðåðûâàòü ÿäðî Linux;
á) ïðîöåññû, ðàáîòàþùèå ïîä óïðàâëåíèåì Linux (îáû÷íûå ïðèëîæåíèÿ, êîòîðûå â
äàííîé ñèñòåìå ðàññìàòðèâàþòñÿ êàê ïîäçàäà÷è ïðîöåññà ÿäðà Linux), à òàêæå
çàäà÷è ðàáîòàþùèå ïîä óïðàâëåíèåì ìèêðîÿäðà, íî èñïîëüçóþùèå ôóíêöèè Linux;
ýòè ïðîöåññû íå óäîâëåòâîðÿþò òðåáîâàíèÿì ðåàëüíîãî âðåìåíè, ïîñêîëüêó ìîãóò
áûòü áëîêèðîâàíû ÿäðîì Linux.
Íåäîñòàòêîì òàêîãî ïîäõîäà ÿâëÿåòñÿ íåîáõîäèìîñòü ðåàëèçàöèè ìèêðîÿäðà, îáåñïå÷èâàþùåãî ôóíêöèîíèðîâàíèÿ ïðîöåññîâ ðåàëüíîãî âðåìåíè. Íàïðèìåð, åñëè ïðîöåññ
50
8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft)
8.4.1. RT-Linux
T
ðåàëüíîãî âðåìåíè õî÷åò ðàáîòàòü ñ êîììóíèêàöèîííûì ïîðòîì (íàïðèìåð, COM ïîðòîì), òî äðàéâåð ýòîãî ïîðòà íàäî ïåðåíåñòè èç ÿäðà Linux â ìèêðîÿäðî (ïîñêîëüêó
èñïîëüçîâàíèå äðàéâåðà Linux ñäåëàåò ýòîò ïðîöåññ çàâèñèìûì îò òåêóùåé çàãðóæåííîñòè ñèñòåìû è äðóãèõ íåïðåäñêàçóåìûõ ôàêòîðîâ). Íàèáîëåå çàêîí÷åííîé ðåàëèçàöèåé
ýòîãî ïîäõîäà ÿâëÿåòñÿ ïðîåêò RT-Linux.
AF
Ñèñòåìà RT-Linux ÿâëÿåòñÿ ñâîáîäíî ðàñïðîñòðàíÿåìîé, ðàçðàáàòûâàåìîé ýíòóçèàñòàìè
â ðÿäå óíèâåðñèòåòîâ ìèðà. Ñîçäàíà â New Mexico Institute of Mining and Technology (USA).
Ïðåäñòàâëÿåò ñîáîé ïðîñòåéøåå ìèêðîÿäðî, îòâå÷àþùåå çà ñîçäàíèå è ïëàíèðîâàíèå çàäà÷, îáåñïå÷åíèå èõ âçàèìîäåéñòâèÿ è äèñïåò÷åðèçàöèþ ïðåðûâàíèé. Ðåàëèçîâàí ïðîñòåéøèé
ïðèîðèòåòíûé ìåõàíèçì ïëàíèðîâàíèÿ è åäèíñòâåííûé ìåõàíèçì âçàèìîäåéñòâèÿ î÷åðåäü
ñîîáùåíèé FIFO. ßäðî Linux ðàáîòàåò êàê ñàìàÿ íèçêîïðèîðèòåòíàÿ çàäà÷à. Ñàìî ÿäðî ïîäïðàâëåíî: ìàêðîîïðåäåëåíèÿ, îòâå÷àþùèå çà çàïðåùåíèå/ðàçðåøåíèå ïðåðûâàíèé çàìåíåíû
íà âûçîâ ñîîòâåòñòâóþùèõ ôóíêöèé ìèêðîÿäðà. Çàäà÷è Linux íå ìîãóò ïðåðâàòü ÿäðî Linux,
çàäà÷è æå ìèêðîÿäðà ìîãóò.
Òèïè÷íûé ìåõàíèçì ôóíêöèîíèðîâàíèÿ ñèñòåìû ñëåäóþùèé. Êðèòè÷åñêàÿ ÷àñòü ïðèëîæåíèÿ (íàïðèìåð, ïîëó÷åíèå äàííûõ ñ äàò÷èêà) ðåàëèçóåòñÿ êàê ïðîöåññ ìèêðîÿäðà. ×àñòü,
îòâå÷àþùàÿ çà âèçóàëèçàöèþ è õðàíåíèå äàííûõ, ðåàëèçóåòñÿ êàê ïðîöåññ Linux. Ýòè äâà
ïðîöåññà âçàèìîäåéñòâóþò ïîñðåäñòâîì î÷åðåäè ñîîáùåíèé FIFO.
Ïðîñòîòà ìèêðîÿäðà ïîçâîëÿåò ðàçðàáîò÷èêàì ëåãêî åãî ìîäèôèöèðîâàòü äëÿ óäîâëåòâîðåíèÿ ñâîèõ ïîòðåáíîñòåé.
Ìèíèìàëüíûé ðàçìåð ñèñòåìû äëÿ çàïèñè â ÏÇÓ (áåç X-Windows) 2.7Mb.
8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft)
Àðãóìåíòû Microsoft "çà"èñïîëüçîâàíèå Windows NT â êà÷åñòâå ÎÑÐÂ.
Ìíîãîïðîöåññíîñòü è ìíîãîçàäà÷íîñòü ñèñòåìû.
Ïîääåðæêà ìíîãîïðîöåññîðíîñòè.
Preemption çàäà÷.
DR
Preemption ïðåðûâàíèé è âîçìîæíîñòü èõ ìàñêèðîâàíèÿ. Ðàñïðåäåëåíèå ïðåðûâàíèé
ìåæäó ïðîöåññîðàìè â ìíîãîïðîöåññîðíîé ñèñòåìå. Äëÿ óìåíüøåíèÿ âðåìåíè ïðåáûâàíèÿ â ïðîöåäóðå îáðàáîòêè ïðåðûâàíèÿ (Interrupt Service Routine, ISR) îáðàáîò÷èê
âûçûâàåò ñïåöèàëüíóþ ïðîöåäóðó (Deffered Procedure Call, DPC) è çàêàí÷èâàåò ðàáîòó.
Îñíîâíàÿ äåÿòåëüíîñòü ïî îáðàáîòêå ïðåðûâàíèÿ âûïîëíÿåòñÿ DPC. Ïðîöåäóðå DPC
íàçíà÷àåòñÿ ïðèîðèòåò è îíà íà÷èíàåò âûïîëíÿòñÿ, óïðàâëÿåìàÿ ïëàíèðîâùèêîì.
Àñèíõðîííûé ââîä/âûâîä.
Ïðÿìîé äîñòóï ê îáîðóäîâàíèþ ïîñðåäñòâîì èíòåðôåéñà HAL (Hardware Abstraction
Level). HAL îáåñïå÷èâàåò èçîëÿöèþ ïðèëîæåíèÿ îò äåòàëåé ðåàëèçàöèè îáîðóäîâàíèÿ,
îáåñïå÷èâàÿ ïëàòôîðìåííî-íåçàâèñèìûé ïðÿìîé äîñòóï ê îáîðóäîâàíèþ.
Ñïåöèàëüíàÿ ñõåìà ïðèîðèòåòîâ. Âñå ïðèîðèòåòû ðàçäåëåíû íà äâå ãðóïïû:
1. Êëàññ äèíàìè÷åñêèõ ïðèîðèòåòîâ (16): ïðèîðèòåòû îò 0 äî 15 (0 ñàìûé íèçêèé).
Ýòè ïðèîðèòåòû äèíàìè÷åñêè ìåíÿþòñÿ ïëàíèðîâùèêîì ïî àëãîðèòìó, áëèçêîìó
ê ïðèíÿòîìó â UNIX ñèñòåìàõ (ñì. ðàçäåë 6.1.2).
2. Êëàññ ïðèîðèòåòîâ ðåàëüíîãî âðåìåíè (7): ïðèîðèòåòû 16, 2226, 31. Ýòè ïðèîðèòåòû ôèêñèðîâàíû, çàäà÷è èç ýòîãî êëàññà ïëàíèðóþòñÿ íà îñíîâå ïðèîðèòåòíîé
î÷åðåäè è ïîëó÷àþò óïðàâëåíèå ðàíüøå çàäà÷ ñ äèíàìè÷åñêèìè ïðèîðèòåòàìè.
51
8. Îáçîð îïåðàöèîííûõ ñèñòåì ðåàëüíîãî âðåìåíè
Ïðîñòðàíñòâî ââîäà-âûâîäà äëÿ çàäà÷ èç êëàññà ðåàëüíîãî âðåìåíè íå ó÷àñòâóåò â ñòðàíè÷íîì îáìåíå ìåõàíèçìà âèðòóàëüíîé ïàìÿòè.
T
Äëÿ çàêðåïëåíèÿ ñòðàíèö çàäà÷è â ïàìÿòè ñóùåñòâóåò ñïåöèàëüíûé ñèñòåìíûé âûçîâ
(VirtualLock()).
Ïðåäîñòàâëÿþòñÿ îáúåêòû ñèíõðîíèçàöèè: êðèòè÷åñêèå ñåêöèè, òàéìåðû, ñîáûòèÿ, mutex, . . .
Àðãóìåíòû "ïðîòèâ"èñïîëüçîâàíèÿ Windows NT â êà÷åñòâå ÎÑÐÂ.
ßäðî ñèñòåìû íå preemptive.
AF
Íåäîñòàòêè ìåõàíèçìà DPC:
1. Âñå ïðîöåäóðû DPC, âûçûâàåìûå îáðàáîò÷èêîì ïðåðûâàíèé, ïîëó÷àþò îäèí è òîò
æå ïðèîðèòåò (èç-çà ìàëîãî êîëè÷åñòâà ïðèîðèòåòîâ) è îáðàáàòûâàþòñÿ ïëàíèðîâùèêîì â ïîðÿäêå ïîñòóïëåíèÿ (FIFO). Òåì ñàìûì íèçêîïðèîðèòåòíûå ïðåðûâàíèÿ
áóäóò îáðàáàòûâàòüñÿ ðàíåå âûñîêîïðèîðèòåòíûõ, íî ïîñòóïèâøèõ ïîçäíåå.
2. Ñèñòåìà íå äàåò âîçìîæíîñòè óçíàòü, ñêîëüêî DPC ñòîèò â î÷åðåäè, ïîýòîìó
íåëüçÿ óçíàòü, êîãäà íà÷íåò îáðàáàòûâàòüñÿ ïðåðûâàíèå. Òàêèì îáðàçîì, ñóùåñòâóåò ñëó÷àéíàÿ çàäåðæêà ìåæäó ïðèõîäîì ïðåðûâàíèÿ è íà÷àëîì åãî îáðàáîòêè.
Îòìåòèì, ÷òî äëÿ òàêèõ áûñòðîäåéñòâóþùèõ óñòðîéñòâ, êàê äèñêîâûå è ñåòåâûå
êîíòðîëëåðû, çàäåðæêà â íåñêîëüêî ìèëëèñåêóíä ìîæåò îêàçàòüñÿ êðèòè÷åñêîé.
3. Äëÿ êàæäîãî ïðåðûâàíèÿ òîëüêî îäèí ýêçåìïëÿð DPC ìîæåò áûòü â î÷åðåäè.
Ñëåäîâàòåëüíî, ïðîöåäóðà DPC äîëæíà óìåòü îáðàáàòûâàòü ïîâòîðÿþùèåñÿ ïðåðûâàíèÿ, à îáîðóäîâàíèå äîëæíî óìåòü áóôåðèçèðîâàòü ïðåðûâàíèÿ âî èçáåæàíèå
ïîòåðè äàííûõ. Ýòî óäîðîæàåò êàê äðàéâåðû óñòðîéñòâ, òàê è îáîðóäîâàíèå.
Îòìåòèì, ÷òî íåñìîòðÿ íà íåäîñòàòêè DPC, Windows NT âûíóæäåíà âûíîñèòü îáðàáîòêó ïðåðûâàíèé èç ISR â DPC, ïîñêîëüêó âî âðåìÿ ISR âñå ïðåðûâàíèÿ çàïðåùåíû
è èõ ìîæíî ïîòåðÿòü.
DR
52
Ìàëîå êîëè÷åñòâî ïðèîðèòåòîâ â êëàññå ðåàëüíîãî âðåìåíè (7) ïðèâîäèò ê òîìó, ÷òî
ìíîãî çàäà÷ áóäóò èìåòü îäèíàêîâûé ïðèîðèòåò è ïëàíèðîâàòüñÿ àëãîðèòìîì òèïà
round robin. Ñëåäîâàòåëüíî, âðåìÿ äî íà÷àëà èñïîëíåíèÿ çàäà÷è áóäåò ñëó÷àéíîé âåëè÷èíîé (çàâèñèò îò òåêóùåé çàãðóæåííîñòè ñèñòåìû).
Íå ðåøåíà ïðîáëåìà èíâåðñèè ïðèîðèòåòîâ (ñì. ðàçäåë 6.1.1). Âìåñòî òðàäèöèîííîãî äëÿ ÎÑÐÂ ìåõàíèçìà íàñëåäîâàíèÿ ïðèîðèòåòîâ (ñì. ðàçäåë 6.1.1) Windows NT
íàçíà÷àåò çàäà÷å, èç-çà íèçêîïðèîðèòåòíîñòè ïðîñòàèâàþùåé â òå÷åíèå íåêîòîðîãî ïåðèîäà âðåìåíè, ñëó÷àéíûé óðîâåíü ïðèîðèòåòà, ïîçâîëÿþùèé åé íà÷àòü ðàáîòó. Ýòî
íåïðåäñêàçóåìî è íåïðèåìëåìî äëÿ ÎÑÐÂ. Ïîñêîëüêó ïðèîðèòåò çàäà÷ êëàññà ðåàëüíîãî âðåìåíè íå ìåíÿåòñÿ, òî ýòîò ìåõàíèçì äåéñòâóåò òîëüêî íà çàäà÷è èç äèíàìè÷åñêîãî
êëàññà. Òåì ñàìûì ñèòóàöèÿ òîëüêî óõóäøàåòñÿ: ïðèîðèòåò íèçêîïðèîðèòåòíûõ çàäà÷
ðåàëüíîãî âðåìåíè íå ìåíÿåòñÿ, à âûñîêîïðèîðèòåòíûå çàäà÷è ìîãóò áûòü âûòåñíåíû
ñîâñåì íèçêîïðèîðèòåòíûìè çàäà÷àìè èç äèíàìè÷åñêîãî êëàññà.
Âûñîêîïðèîðèòåòíûå çàäà÷è ìîãóò áëîêèðîâàòüñÿ íèçêîïðèîðèòåòíûìè. Äåëî â òîì,
÷òî ïðèîðèòåòû çàäà÷ èç êëàññà ðåàëüíîãî âðåìåíè âñå-òàêè ìîãóò ìåíÿòñÿ. Íåêîòîðûå
êîìïîíåíòû ÿäðà ðàáîòàþò íà óðîâíå ïðèîðèòåòà äèíàìè÷åñêîãî êëàññà. Ñëåäîâàòåëüíî, íåêîòîðûå ñèñòåìíûå âûçîâû ïðèâîäÿò ê ïîíèæåíèþ ïðèîðèòåòà è âûâîäó çàäà÷è
èç êëàññà ðåàëüíîãî âðåìåíè. Ïðè ýòîì îíà ìîæåò áûòü çàáëîêèðîâàíà äðóãîé çàäà÷åé,
èìåâøåé äî ýòîãî áîëåå íèçêèé ïðèîðèòåò.
8.5. Ñèñòåìû íà îñíîâå Windows NT (Microsoft)
Âñå ñòðàíèöû íåàêòèâíîãî ïðîöåññà (íàïðèìåð, îæèäàþùåãî äàííûõ), ìîãóò áûòü ïåðåíåñåíû íà äèñê, íåñìîòðÿ íà çàêðåïëåíèå èõ âûçîâîì VirtualLock(). Ýòî ïðèâîäèò
ê ñëó÷àéíûì çàäåðæêàì ïðè àêòèâèçàöèè ïðîöåññà (íàïðèìåð, ïðè ïîñòóïëåíèè îæèäàâøèõñÿ äàííûõ).
T
Äëÿ Windows NT îôèöèàëüíî íå ïðèâîäÿòñÿ âðåìåíà ñèñòåìíûõ âûçîâîâ è âðåìåíà
áëîêèðîâàíèÿ ïðåðûâàíèé.
Ñèñòåìó íåâîçìîæíî èñïîëüçîâàòü áåç äèñïëåÿ è êëàâèàòóðû.
Ñèñòåìà ïðåäúÿâëÿåò ñëèøêîì áîëüøèå äëÿ ÎÑÐÂ çàïðîñû íà ïàìÿòü.
AF
Äëÿ óñòðàíåíèÿ ýòèõ íåäîñòàòêîâ ðÿä êîìïàíèé ïðåäëàãàåò ïðîãðàììíûå (àïïàðàòíûå)
ñðåäñòâà. Îñíîâíûå èäåè èõ ïîñòðîåíèÿ òå æå, ÷òî è äëÿ Linux. Ïîñêîëüêó èñõîäíûé êîä
ñèñòåìû íåäîñòóïåí, òî, â îòëè÷èå îò Linux, ñóùåñòâóåò òîëüêî îäèí ñïîñîá ïðèñïîñîáèòü
ñèñòåìó ê òðåáîâàíèÿì ðåàëüíîãî âðåìåíè: ðàçðàáîòàòü ìèêðîÿäðî, îáåñïå÷èâàþùåå íàäëåæàùåå ïëàíèðîâàíèå çàäà÷ è äèñïåò÷åðèçàöèþ ïðåðûâàíèé, à Window NT âûïîëíÿòü êàê
ïðîöåññ.
8.5.1. Hyperkernel
Ñèñòåìà Hyperkernel âûïóñêàåòñÿ ôèðìîé Nematron. Ïðåäñòàâëÿåò ñîáîé ÿäðî, îáåñïå÷èâàþùåå äåòåðìèíèñòè÷íîå ïëàíèðîâàíèå è ðàáîòàþùåå íà óðîâíå ïðèâèëåãèé 0 ïðîöåññîðà
Intel 80x86 âìåñòå ñ Windows NT. Çàäà÷è Hyperkernel íå âèäíû Windows NT. Äëÿ íèõ îïðåäåëåíû 8 óðîâíåé ïðèîðèòåòîâ ñ preemptive ïëàíèðîâàíèåì.  êà÷åñòâå ñðåäñòâà ðàçðàáîòêè
èñïîëüçóþòñÿ ñòàíäàðòíûå äëÿ Windows NT êîìïèëÿòîðû Visual C/C++ è ñïåöèàëüíûå áèáëèîòåêè. Èñïîëüçóåòñÿ API Win32 è ñòàíäàðòíûé HAL. Ðàçðåøåíèå òàéìåðà: 1 ìèêðîñåêóíäà,
ìèíèìàëüíûé êâàíò âðåìåíè 20 ìèêðîñåêóíä. Âðåìÿ çàäåðæêè ðåàêöèè íà ïðåðûâàíèå: 5 ìèêðîñåêóíä, ïåðåêëþ÷åíèå êîíòåêñòà 4 ìèêðîñåêóíäû íà Intel Pentium 133Mhz.
8.5.2. LP RT-Technology
Ñèñòåìà LP RT-Technology âûïóñêàåòñÿ ôèðìîé LP Elektronik GmbH è âêëþ÷àåò òðè
êîìïîíåíòû.
DR
1. Ïëàòó äëÿ øèíû ISA, îáåñïå÷èâàþùóþ 7 äîïîëíèòåëüíûõ óðîâíåé ïðåðûâàíèé. Äëÿ
âçàèìîäåéñòâèÿ ñ îñòàëüíîé ñèñòåìîé ïëàòà èñïîëüçóåò NMI íåìàñêèðóåìîå ïðåðûâàíèå ïðîöåññîðà Intel 80x86.
2. LP-RTWin Toolkit êîìïëåêò ðàçðàáîò÷èêà ISR, èñïîëüçóåìûé ñîâìåñòíî ñ Visual
C/C++ è îòëàä÷èêîì SoftICE ôèðìû NuMega.
3. LP-VxWin RTAcc ïðîãðàììíûé êîìïëåêñ, îáåñïå÷èâàþùèé ñîñóùåñòâîâàíèå Windows NT è VxWorks íà îäíîì PC. Äâå îïåðàöèîííûå ñèñòåìû âçàèìîäåéñòâóþò ïîñðåäñòâîì ïðîòîêîëà TCP/IP ÷åðåç ðàçäåëÿåìóþ ïàìÿòü.  êà÷åñòâå ñðåäñòâà ðàçðàáîòêè
èñïîëüçóåòñÿ Tornado êîìïëåêò ðàçðàáîò÷èêà äëÿ VxWorks.
8.5.3. Realtime ETS Kernel
Ñèñòåìà Realtime ETS Kernel âûïóñêàåòñÿ ôèðìîé Phar Lap SoftWare â äâóõ âàðèàíòàõ.
1. TNT Embedded ToolSuite, Realtime Edition, âêëþ÷àþùèé: Realtime ETS Kernel,
ETS TCP/IP, îòëàä÷èê CodeView ñ ïîääåðæêîé Borland Turbo Debugger àññåìáëåð
386ASM, linker, ïîääåðæêó êîìïèëÿòîðîâ Visual C/C++, Borland C/C++, Watcom
C/C++ è API Win32.
2. Realtime ETS Kernel ïîëíàÿ çàìåíà Windows NT, âêëþ÷àåò: êîìïàêòíîå ÿäðî
(28Kb), ïîääåðæèâàþùåå Win32 API è èñïîëüçóþùåå ñòàíäàðòíûå áèáëèîòåêè êîìïèëÿòîðîâ; ÿäðî èìååò 32 óðîâíÿ ïðèîðèòåòîâ è ìîæåò áûòü çàïèñàíî â ÏÇÓ.
53
9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
8.5.4. Component Integrator
T
Ñèñòåìà Component Integrator âûïóñêàåòñÿ ôèðìîé VenturCom, Inc.  îòëè÷èå îò ïðåäûäóùèõ ñèñòåì, çäåñü íå ââîäèòñÿ íîâîå ÿäðî, à ïðåäëàãàþòñÿ ïàêåòû, ðàñøèðÿþùèå ðÿä
óçêèõ ìåñò Windows NT.
1. Embedded Component Kit (ECK), âêëþ÷àþùèé: ïîääåðæêó ðàáîòû áåç äèñïëåÿ è
êëàâèàòóðû, óìåíüøåíèå ïîòðåáíîñòè â ïàìÿòè, îòêëþ÷åíèå ñòðàíè÷íîãî îáìåíà, ïîääåðæêó ôëåø-ïàìÿòè (âîçìîæíîñòü çàãðóçêè ñ ôëåø-ïàìÿòè îáúåìîì 10Mb) è øèíû
VME.
AF
2. Real-time Extension (RTX), âêëþ÷àþùèé: ïîääåðæêó òàéìåðîâ (ðàçðåøåíèå 1 ìèêðîñåêóíäà, ìèíèìàëüíûé êâàíò âðåìåíè 100 ìèêðîñåêóíä), îòêëþ÷åíèå âèðòóàëüíîé
ïàìÿòè, ðàáîòà ñ ôèçè÷åñêîé ïàìÿòüþ (ò.å. òîæäåñòâåííîå îòîáðàæåíèå âèðòóàëüíîé
ïàìÿòè íà ôèçè÷åñêóþ), 128 íîâûõ óðîâíåé ïðèâèëåãèé. Âðåìÿ çàäåðæêè ðåàêöèè íà
ïðåðûâàíèå: 520 ìèêðîñåêóíä,
8.5.5. Willows RT
Ñèñòåìà Willows RT âûïóñêàåòñÿ ôèðìîé Willows SoftWare, Inc.  îòëè÷èå îò ïðåäûäóùèõ ñèñòåì, çäåñü ïðèëîæåíèå âîîáùå íå áóäåò çàïóñêàòüñÿ â Window NT. Windows NT
èñïîëüçóåòñÿ òîëüêî êàê ïëàòôîðìà ðàçðàáîòêè, ïðèëîæåíèå æå áóäåò ðàáîòàòü ïîä óïðàâëåíèåì íàñòîÿùåé ÎÑР(QNX, VxWorks, . . . ). Ñèñòåìà ñîñòîèò èç òðåõ ÷àñòåé.
1. Áèáëèîòåêè TWIN32 è TWIN16, çàìåíÿþùèå áèáëèîòåêè Microsoft è ðåàëèçóþùèå API.
2. TWIN Platform Abstraction Layer, ÿäðî, îáåñïå÷èâàþùåå ñèñòåìíûå âûçîâû Microsoft.
3. TWIN Binary Interface, îáåñïå÷èâàþùèé òðàíñëÿöèþ âûçîâîâ Platform Abstraction
Layer â API èñïîëüçóåìîé ÎÑÐÂ.
9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
DR
Îñíîâíûìè êðèòåðèÿìè ïðè âûáîðå ÿçûêà äëÿ ðàçðàáîòêè ïðèëîæåíèÿ ðåàëüíîãî âðåìåíè ÿâëÿþòñÿ:
1. Ïîëó÷åíèå íàèâûñøåé ïðîèçâîäèòåëüíîñòè ïðèëîæåíèÿ ðåàëüíîãî âðåìåíè. Èç
ýòîãî òðåáîâàíèÿ êàê ïðàâèëî âûòåêàåò, ÷òî ÿçûê äîëæåí áûòü êîìïèëèðóåìîãî (êàê
C, C++), à íå èíòåðïðåòèðóåìîãî (êàê Java) òèïà, è äëÿ íåãî äîëæåí ñóùåñòâîâàòü
êîìïèëÿòîð ñ âûñîêîé ñòåïåíüþ îïòèìèçàöèè êîäà. Îòìåòèì, ÷òî äëÿ ñîâðåìåííûõ
ïðîöåññîðîâ êà÷åñòâî êîìïèëÿòîðà îñîáåííî âàæíî, ïîñêîëüêó äëÿ íèõ îïòèìèçàöèÿ
ìîæåò óñêîðÿòü ðàáîòó ïðîãðàììû â íåñêîëüêî ðàç ïî ñðàâíåíèþ ñ íåîïòèìèçèðîâàííûì âàðèàíòîì, ïðè÷åì ÷àñòî îïòèìèçèðóþùèé êîìïèëÿòîð ìîæåò ïîðîäèòü êîä áîëåå
áûñòðûé, ÷åì íàïèñàííûé íà àññåìáëåðå ÷åëîâåêîì. Òåõíîëîãèè îïòèìèçàöèè ðàçâèâàþòñÿ äîñòàòî÷íî ìåäëåííî è ÷àñòî òðåáóþòñÿ ãîäû íà ðàçðàáîòêó âûñîêîýôôåêòèâíîãî
êîìïèëÿòîðà. Ïîýòîìó îáû÷íî äëÿ áîëåå ñòàðûõ è ñ áîëåå ïðîñòîé ñòðóêòóðîé ÿçûêîâ èìåþòñÿ áîëåå êà÷åñòâåííûå êîìïèëÿòîðû, ÷åì äëÿ äîñòàòî÷íî ìîëîäûõ è ñëîæíî
óñòðîåííûõ ÿçûêîâ.
2. Ïîëó÷åíèå äîñòóïà ê ðåñóðñàì îáîðóäîâàíèÿ ëèáî ïîñðåäñòâîì ÿçûêîâûõ êîíñòðóêöèé, ëèáî ïîñðåäñòâîì èìåþùèõñÿ äëÿ âûáðàííîãî ÿçûêà áèáëèîòå÷íûõ ôóíêöèé.
3. Âîçìîæíîñòü âûçîâà ïðîöåäóð, íàïèñàííûõ íà äðóãîì ÿçûêå, íàïðèìåð, íà
ÿçûêå àññåìáëåðà. Èç ýòîãî òðåáîâàíèÿ âûòåêàåò, ÷òî ïîñëåäîâàòåëüíîñòü âûçîâà ïîäïðîãðàìì (ìåõàíèçì èìåíîâàíèÿ îáúåêòîâ, ïåðåäà÷è àðãóìåíòîâ è ïîëó÷åíèÿ âîçâðàùàåìîãî çíà÷åíèÿ) äîëæíà áûòü äîêóìåíòèðîâàíà äëÿ âûáðàííîãî ÿçûêà.
54
9. ßçûêè ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
T
4. Ïåðåíîñèìîñòü ïðèëîæåíèÿ, ïîä êîòîðîé îáû÷íî ïîíèìàþò êàê âîçìîæíîñòü åãî
ñêîìïèëèðîâàòü äðóãèì êîìïèëÿòîðîì, èìåþùèìñÿ íà òîé æå ïëàòôîðìå, òàê è âîçìîæíîñòü åãî ñêîìïèëèðîâàòü íà äðóãîé ïëàòôîðìå è/èëè äðóãîé îïåðàöèîííîé ñèñòåìå.
5. Ïîääåðæêà îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà ñòàëà â ïîñëåäíåå âðåìÿ íåîáõîäèìîñòüþ, çà÷àñòóþ âûõîäÿ â ñïèñêå òðåáîâàíèé íà ïåðâîå ìåñòî. Ýòî îáúÿñíÿåò
èñïîëüçîâàíèå ÿçûêà Java â ÎÑÐÂ.
×àñòî ïîìèìî ïåðå÷èñëåííûõ âûøå òåõíè÷åñêèõ òðåáîâàíèé âûáîð ÿçûêà ðàçðàáîòêè äèêòóåòñÿ îðãàíèçàöèîííî-ôèíàíñîâûìè ìîòèâàìè:
AF
1. Âûáèðàòü ïðèõîäèòüñÿ èç ñïèñêà ïîääåðæèâàåìûõ ÿçûêîâ, êîòîðûìè îáû÷íî
ÿâëÿþòñÿ C è C++. Ó ïîñòàâùèêà ÎÑÐÂ áûâàåò ìîæíî çàêàçàòü ïîääåðæêó íîâîãî
ÿçûêà, íî ýòî áóäåò ñòîèòü î÷åíü äîðîãî.
2. Âûáîð ÿçûêà ìîæåò äèêòîâàòüñÿ íàëè÷èåì çíà÷èòåëüíî îáúåìà ïðîãðàììíîãî îáåñïå÷åíèÿ íà ýòîì ÿçûêå. Îáû÷íî ôèðìà-ðàçðàáîò÷èê ÏÎ (ïðîãðàììíîãî
îáåñïå÷åíèÿ) óæå èìååò àðõèâ ïðåäûäóùèõ ðàçðàáîòîê, è ÿçûê, íà êîòîðîì îíè íàïèñàíû, äèêòóåò â ýòîì ñëó÷àå ÿçûê äëÿ íîâûõ ðàçðàáîòîê.
3. Âûáîð ÿçûêà ìîæåò äèêòîâàòüñÿ îòðàñëåâûì ñòàíäàðòîì â òîé îáëàñòè, äëÿ
êîòîðîé ïèøåòñÿ ïðèëîæåíèå. Íàïðèìåð, äëÿ ðàçðàáîòîê â âîåííîé îáëàñòè â ÑØÀ
ïðèíÿò ÿçûê Ada, è âñå ÏÎ äëÿ ýòîé ñôåðû ïèøåòñÿ íà ýòîì ÿçûêå.
Îñíîâíûå ÿçûêè ðàçðàáîòêè äëÿ ÎÑÐÂ:
C. Îáåñïå÷èâàåò ïîëó÷åíèå âûñîêîé ïðîèçâîäèòåëüíîñòè çà ñ÷åò õîðîøî ðàçðàáîòàííûõ
îïòèìèçèðóþùèõ êîìïèëÿòîðîâ, êîòîðûå äëÿ ñîâðåìåííûõ ïðîöåññîðîâ ÷àñòî äàþò êîä
áîëåå ýôôåêòèâíûé, ÷åì íàïèñàííûé íà àññåìáëåðå. ßçûê C äàåò ïðÿìîé äîñòóï ê îáîðóäîâàíèþ è âîçìîæíîñòü âûçîâà ïðîöåäóð íà äðóãèõ ÿçûêàõ. Ïðèëîæåíèÿ ïîëó÷àþòñÿ
ïåðåíîñèìûìè (îñîáåííî, åñëè ÎÑÐÂ ïîääåðæèâàþò îäèíàêîâûé ñòàíäàðò, íàïðèìåð
POSIX), îäíàêî, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé
îòñóòñòâóåò.
DR
Àññåìáëåð. Îáåñïå÷èâàåò ïîëó÷åíèå íàèâûñøåé ïðîèçâîäèòåëüíîñòè, ïðÿìîé äîñòóï
ê îáîðóäîâàíèþ, âîçìîæíîñòü âûçîâà ëþáûõ ïðîöåäóð íà äðóãèõ ÿçûêàõ. Îäíàêî, ïðèëîæåíèÿ ïîëó÷àþòñÿ íå ïåðåíîñèìûìè, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä îòñóòñòâóåò. Îáû÷íî àññåìáëåð èñïîëüçóåòñÿ òîëüêî äëÿ íàïèñàíèÿ íåáîëüøèõ è ÷åòêî ëîêàëèçîâàííûõ ôðàãìåíòîâ ïðèëîæåíèÿ, òàêèõ, êàê îáðàáîò÷èêè ïðåðûâàíèé, äðàéâåðû
óñòðîéñòâ, êðèòè÷åñêèå ïî âðåìåíè èñïîëíåíèÿ ñåêöèè.
C++.
Java.
Ada.
Âêëþ÷àåò ÿçûê C êàê ïîäìíîæåñòâî è íàñëåäóåò âñå åãî ïîëîæèòåëüíûå êà÷åñòâà. C++ äîáàâëÿåò ïîääåðæêó îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé.
Êàê ÿçûê èíòåðïðåòèðóåìîãî òèïà, èìååò î÷åíü íèçêóþ ýôôåêòèâíîñòü ïîëó÷àåìîãî êîäà. Äîñòóï îáîðóäîâàíèþ è âûçîâû ïðîöåäóð íà äðóãèõ ÿçûêàõ òîëüêî
ïîñðåäñòâîì áèáëèîòå÷íûõ ôóíêöèé (îáû÷íî íàïèñàííûõ íà C). Java îáåñïå÷èâàåò íàèâûñøóþ ïåðåíîñèìîñòü ïðèëîæåíèÿ íà óðîâíå äâîè÷íîãî êîäà, è ÿâëÿåòñÿ îáúåêòíîîðèåíòèðîâàííûì ÿçûêîì.
ßçûê Ada ðàçðàáàòûâàëñÿ (â 19751979ãã.) ñïåöèàëüíî äëÿ ïðèìåíåíèÿ âî âñòðàèâàåìûõ ñèñòåìàõ è ñèñòåìàõ ðåàëüíîãî âðåìåíè ìèíèñòåðñòâà îáîðîíû ÑØÀ. Îáåñïå÷èâàåò ïîëó÷åíèå âûñîêîé ïðîèçâîäèòåëüíîñòè çà ñ÷åò õîðîøî ðàçðàáîòàííûõ îïòèìèçèðóþùèõ êîìïèëÿòîðîâ. ßçûê Ada äàåò ïðÿìîé äîñòóï ê îáîðóäîâàíèþ è âîçìîæíîñòü
âûçîâà ïðîöåäóð íà äðóãèõ ÿçûêàõ (÷òî, îäíàêî, íå ïðèâåòñòâóåòñÿ ñòàíäàðòîì). Ïðèëîæåíèÿ ïîëó÷àþòñÿ ïåðåíîñèìûìè çà ñ÷åò åæåãîäíîé àòòåñòàöèè êîìïèëÿòîðîâ íà
55
11. Àðõèòåêòóðû ïðîöåññîðîâ
ßçûêè ÷åòâåðòîãî ïîêîëåíèÿ (CASE ñðåäñòâà).
Ñðåäñòâà CASE (Computer Aided
Software Engenering) ïîëó÷èëè øèðîêîå ðàñïðîñòðàíåíèå ïðè ðàçðàáîòêå ïðèëîæåíèé
ðåàëüíîãî âðåìåíè â ñèëó áîëüøîé ñëîæíîñòè ïîñëåäíèõ. ßçûêè ÷åòâåðòîãî ïîêîëåíèÿ ïðåäñòàâëÿþò ñîáîé ôîðìàëèçîâàííûé ñïîñîá îïèñàíèÿ îáúåêòîâ, èõ ñâîéñòâ è
âçàèìîîòíîøåíèé ìåæäó ñîáîé. Ïî ýòîìó ôîðìàëüíîìó îïèñàíèþ êîìïèëÿòîð ñòðîèò òåêñò ïðèëîæåíèÿ íà ÿçûêå áîëåå íèçêîãî óðîâíÿ (îáû÷íî ïðåäîñòàâëÿåòñÿ âûáîð
ìåæäó C/C++/Java). Çàòåì ýòîò òåêñò ìîæíî ñêîìïèëèðîâàòü óæå îáû÷íûì êîìïèëÿòîðîì. Ïîñêîëüêó ìîæíî äîáàâëÿòü ôðàãìåíòû íà ÿçûêå áîëåå íèçêîãî óðîâíÿ, òî
CASE ñðåäñòâà íàñëåäóþò âñå ïîëîæèòåëüíûå ñâîéñòâà ïîñëåäíåãî.
AF
T
óäîâëåòâîðåíèå ñòàíäàðòó. Îäíàêî, îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä íà óðîâíå ÿçûêîâûõ êîíñòðóêöèé îòñóòñòâóåò.
10. Ñðåäû ðàçðàáîòêè äëÿ ñèñòåì ðåàëüíîãî âðåìåíè
Ê ñðåäàì ðàçðàáîòêè â ñèñòåìàõ ðåàëüíîãî âðåìåíè óäåëÿþò çíà÷èòåëüíî áîëüøå âíèìàíèÿ, ÷åì â îáû÷íûõ ñèñòåìàõ. Ýòî ñâÿçàíî êàê ñî ñëîæíîñòüþ è îòâåòñòâåííîñòüþ ðàçðàáàòûâàåìûõ ïðèëîæåíèé, òàê è ñî ñëîæíîñòüþ ìîäåëè ðàçðàáîòêè, êîãäà ïëàòôîðìà, ãäå
ðàçðàáàòûâàåòñÿ ïðèëîæåíèå, îòëè÷àåòñÿ îò ïëàòôîðìû, ãäå îíî çàïóñêàåòñÿ. Îñíîâíûå òðåáîâàíèÿ ê ñðåäàì ðàçðàáîòêè äëÿ ÎÑÐÂ:
1. Ïîääåðæêà âûáðàííîãî ÿçûêà ïðîãðàììèðîâàíèÿ.
2. Îáåñïå÷åíèå ñîâìåñòíîé ðàáîòû êîëëåêòèâà ðàçðàáîò÷èêîâ íàä îäíèì ïðîåêòîì.
3. Îáåñïå÷åíèå óïðàâëåíèÿ ïðîåêòîì: äîáàâëåíèå/óäàëåíèå ôàéëîâ ñ àâòîìàòè÷åñêîé ãåíåðàöèåé makefile-îâ, êîíòðîëü âåðñèé, âåäåíèå íåñêîëüêèõ êîíôèãóðàöèé.
4. Îáåñïå÷åíèå ðàçðàáîòêè äëÿ íåñêîëüêèõ ïëàòôîðì: ðàçäåëåíèå ðåçóëüòàòîâ
òðàíñëÿöèè îäíîãî ïðèëîæåíèÿ äëÿ ðàçíûõ öåëåâûõ ñèñòåì.
DR
5. Ïîääåðæêà çàïóñêà è îòëàäêè ïðèëîæåíèé (íàïîìíèì, ÷àñòî ñèñòåìà, ãäå ïðèëîæåíèå çàïóñêàåòñÿ, îòëè÷àåòñÿ îò ñèñòåìû, ãäå îíî ðàçðàáàòûâàåòñÿ).
6. Óïðàâëåíèå äîêóìåíòàöèåé: ñðåäñòâà àâòîìàòè÷åñêîé ãåíåðàöèè äîêóìåíòàöèè è
ðàçíîîáðàçíûõ îò÷åòîâ.
7. Âîçìîæíîñòü ïîäêëþ÷åíèÿ âíåøíèõ óòèëèò: âîçìîæíîñòü èñïîëüçîâàíèÿ àëüòåðíàòèâíîãî ðåäàêòîðà, êîìïèëÿòîðà, îòëàä÷èêà, ñðåäñòâà êîíòðîëÿ âåðñèé è ò.ä. Ýòî
ïîçâîëÿåò èñïîëüçîâàòü îäíó è òó æå ñðåäó ðàçðàáîòêè íà ðàçíûõ ïëàòôîðìàõ.
11. Àðõèòåêòóðû ïðîöåññîðîâ
Ðàññìîòðèì àðõèòåêòóðû îñíîâíûõ ïðîöåññîðîâ, ïðèìåíÿåìûõ â ÎÑÐÂ.
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
Ðàññìîòðèì îñíîâíûå ïóòè, êîòîðûìè ðàçðàáîò÷èêè ïðîöåññîðîâ ïûòàþòñÿ ïîâûñèòü èõ
ïðîèçâîäèòåëüíîñòü è òî, êàê ýòî âëèÿåò íà ñèñòåìû ðåàëüíîãî âðåìåíè.
56
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
11.1.1. CISC è RISC ïðîöåññîðû
F
F
I
C T I
C
T
Îñíîâíîé âðåìåííîé õàðàêòåðèñòèêîé äëÿ ïðîöåññîðà ÿâëÿåòñÿ âðåìÿ öèêëà, ðàâíîå 1= ,
ãäå
òàêòîâàÿ ÷àñòîòà ïðîöåññîðà. Âðåìÿ, çàòðà÷èâàåìîå ïðîöåññîðîì íà çàäà÷ó, ìîæåò
áûòü âû÷èñëåíî ïî ôîðìóëå , ãäå
÷èñëî öèêëîâ íà îäíó èíñòðóêöèþ,
âðåìÿ
íà îäèí öèêë, ÷èñëî èíñòðóêöèé íà çàäà÷ó.
Ðàçðàáîò÷èêè êëàññè÷åñêèõ ñèñòåì (êîòîðûå òåïåðü íàçûâàþò CISC (Complete Instruction Set Computer)) ñòðåìèëèñü óìåíüøèòü ôàêòîð .  ïðîöåññîðàõ ðåàëèçîâûâàëèñü âñå
áîëåå ñëîæíûå èíñòðóêöèè, äëÿ âûïîëíåíèÿ êîòîðûõ âíóòðè íåãî ñàìîãî çàïóñêàëèñü ñïåöèàëüíûå ïðîöåäóðû (òàê íàçûâàåìûé ìèêðîêîä), çàãðóæàåìûå èç ÏÇÓ âíóòðè ïðîöåññîðà.
Ýòîìó ïóòè ñïîñîáñòâîâàëî òî, ÷òî óëó÷øåíèÿ â òåõíèêå ïðîèçâîäñòâà ïîëóïðîâîäíèêîâ äåëàëè âîçìîæíûì ðåàëèçàöèþ âñå áîëåå ñëîæíûõ èíòåãðèðîâàííûõ öåïåé. Îäíàêî, íà ýòîì
ïóòè î÷åíü òðóäíî óìåíüøèòü äâà äðóãèõ ôàêòîðà:
ïîñêîëüêó èíñòðóêöèè ñëîæíûå è
òðåáóþò ïðîãðàììíîãî äåêîäèðîâàíèÿ è
â ñèëó àïïàðàòíîé ñëîæíîñòè.
Êîíöåïöèÿ RISC (Reduced Instruction Set Computer) âîçíèêëà èç ñòàòèñòè÷åñêîãî àíàëèçà òîãî, êàê ïðîãðàììíîå îáåñïå÷åíèå èñïîëüçóåò ðåñóðñû ïðîöåññîðà. Èññëåäîâàíèÿ ñèñòåìíûõ ÿäåð è îáúåêòíûõ ìîäóëåé, ïîðîæäåííûõ îïòèìèçèðóþùèìè êîìïèëÿòîðàìè, ïîêàçàëè
ïîäàâëÿþùåå äîìèíèðîâàíèå ïðîñòåéøèõ èíñòðóêöèé äàæå â êîäå äëÿ CISC ìàøèí. Ñëîæíûå èíñòðóêöèè èñïîëüçóþòñÿ ðåäêî, ïîñêîëüêó ìèêðîêîä îáû÷íî íå ñîäåðæèò â òî÷íîñòè
òå ïðîöåäóðû, êîòîðûå íóæíû äëÿ ïîääåðæêè ðàçëè÷íûõ ÿçûêîâ âûñîêîãî óðîâíÿ è ñðåä
èñïîëíåíèÿ ïðîãðàìì. Ïîýòîìó ðàçðàáîò÷èêè RISC ïðîöåññîðîâ óáðàëè ðåàëèçîâàííûå â
ìèêðîêîäå ïðîöåäóðû è ïåðåäàëè ïðîãðàììíîìó îáåñïå÷åíèþ íèçêîóðîâíåâîå óïðàâëåíèå
ìàøèíîé. Ýòî ïîçâîëèëî çàìåíèòü ïðîöåññîðíûé ìèêðîêîä â ÏÇÓ íà ïîäïðîãðàììó â áîëåå
áûñòðîé ÎÇÓ.
Ðàçðàáîò÷èêè RISC ïðîöåññîðîâ óëó÷øèëè ïðîèçâîäèòåëüíîñòü çà ñ÷åò óìåíüøåíèÿ äâóõ
ôàêòîðîâ:
(çà èñïîëüçîâàíèÿ òîëüêî ïðîñòûõ èíñòðóêöèé) è
(çà ñ÷åò óïðîùåíèÿ ïðîöåññîðà). Îäíàêî, èçìåíåíèÿ, âíåñåííûå äëÿ óìåíüøåíèÿ ÷èñëà öèêëîâ íà èíñòðóêöèþ è
âðåìåíè íà öèêë, èìåþò òåíäåíöèþ ê óâåëè÷åíèþ ÷èñëà èíñòðóêöèé íà çàäà÷ó. Ýòîò ìîìåíò
áûë â öåíòðå âíèìàíèÿ êðèòèêîâ RISC àðõèòåêòóðû. Îäíàêî, èñïîëüçîâàíèå îïòèìèçèðóþùèõ êîìïèëÿòîðîâ è äðóãèõ òåõíè÷åñêèõ ïðèåìîâ, ïðàêòè÷åñêè ëèêâèäèðóåò ýòó ïðîáëåìó.
T
I
C
C
AF
T
T
DR
11.1.2. Îñíîâíûå ÷åðòû RISC àðõèòåêòóðû
Ó RISC ïðîöåññîðà âñå èíñòðóêöèè èìåþò îäèíàêîâûé ôîðìàò è ñîñòîÿò èç áèòîâûõ
ïîëåé, îïðåäåëÿþùèõ êîä èíñòðóêöèè è èäåíòèôèöèðóþùèõ åå îïåðàíäû. Â ñèëó ýòîãî äåêîäèðîâàíèå èíñòðóêöèé ïðîèçâîäèòñÿ àïïàðàòíî, ò.å. ìèêðîêîä íå òðåáóåòñÿ. Ïðè ýòîì â
ñèëó îäèíàêîâîãî ñòðîåíèÿ âñåõ èíñòðóêöèé ïðîöåññîð ìîæåò äåêîäèðîâàòü íåñêîëüêî ïîëåé
îäíîâðåìåííî äëÿ óñêîðåíèÿ ýòîãî ïðîöåññà.
Èíñòðóêöèè, ïðîèçâîäÿùèå îïåðàöèè â ïàìÿòè, îáû÷íî ëèáî óâåëè÷èâàþò âðåìÿ öèêëà, ëèáî ÷èñëî öèêëîâ íà èíñòðóêöèþ. Òàêèå èíñòðóêöèè òðåáóþò äîïîëíèòåëüíîãî âðåìåíè
äëÿ ñâîåãî èñïîëíåíèÿ, òàê êàê òðåáóåòñÿ âû÷èñëèòü àäðåñà îïåðàíäîâ, ñ÷èòàòü èõ èç ïàìÿòè,
âû÷èñëèòü ðåçóëüòàò îïåðàöèè è çàïèñàòü åãî îáðàòíî â ïàìÿòü. Äëÿ óìåíüøåíèÿ íåãàòèâíîãî âëèÿíèÿ òàêèõ èíñòðóêöèé, ðàçðàáîò÷èêè RISC ïðîöåññîðîâ âûáðàëè àðõèòåêòóðó ÷òåíèå/çàïèñü, â êîòîðîé âñå îïåðàöèè âûïîëíÿþòñÿ íàä îïåðàíäàìè â ðåãèñòðàõ ïðîöåññîðà, à
îñíîâíàÿ ïàìÿòü äîñòóïíà òîëüêî ïîñðåäñòâîì èíñòðóêöèé ÷òåíèÿ/çàïèñè. Äëÿ ýôôåêòèâíîñòè ýòîãî ïîäõîäà RISC ïðîöåññîðû èìåþò áîëüøîå êîëè÷åñòâî ðåãèñòðîâ. Àðõèòåêòóðà
÷òåíèå/çàïèñü òàêæå ïîçâîëÿåò óìåíüøèòü êîëè÷åñòâî ðåæèìîâ àäðåñàöèè ïàìÿòè, ÷òî ïîçâîëÿåò óïðîñòèòü äåêîäèðîâàíèå èíñòðóêöèé.
Äëÿ CISC àðõèòåêòóð âðåìÿ èñïîëíåíèÿ èíñòðóêöèè îáû÷íî èçìåðÿåòñÿ â ÷èñëå öèêëîâ
íà èíñòðóêöèþ. Ðàçðàáîò÷èêè RISC àðõèòåêòóð, îäíàêî, ñòðåìèëèñü ïîëó÷èòü ñêîðîñòü âûïîëíåíèÿ èíñòðóêöèè, ðàâíóþ îäíîé èíñòðóêöèè çà öèêë.
Äëÿ RISC ïðîöåññîðà âî ìíîãèõ ñëó÷àÿõ òîëüêî íàëè÷èå îïòèìèçèðóþùåãî êîìïèëÿòîðà ïîçâîëÿåò ðåàëèçîâàòü âñå åãî âîçìîæíîñòè. Îòìåòèì, ÷òî êîìïèëÿòîð ìîæåò íàèëó÷øèì
57
11. Àðõèòåêòóðû ïðîöåññîðîâ
11.1.3. Êîíâåéåðèçàöèÿ
T
îáðàçîì îïòèìèçèðîâàòü êîä èìåííî äëÿ RISC àðõèòåêòóð (â ñèëó èõ ïðîñòîòû). Ïðîãðàììèðîâàíèå íà ÿçûêå àññåìáëåðà èñ÷åçàåò äëÿ RISC ïðèëîæåíèé, òàê êàê êîìïèëÿòîðû ÿçûêîâ
âûñîêîãî óðîâíÿ ìîãóò ïðîèçâîäèòü î÷åíü ñèëüíóþ îïòèìèçàöèþ.
DR
AF
Êîíâåéåðèçàöèÿ ÿâëÿåòñÿ îäíèì èç îñíîâíûõ ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè
ïðîöåññîðà. Êîíâåéåðíûé ïðîöåññîð ïðèíèìàåò íîâóþ èíñòðóêöèþ êàæäûé öèêë äàæå åñëè ïðåäûäóùèå èíñòðóêöèè íå çàâåðøåíû. Â ðåçóëüòàòå âûïîëíåíèå íåñêîëüêèõ èíñòðóêöèé
ïåðåêðûâàåòñÿ è â ïðîöåññîðå íàõîäÿòñÿ ñðàçó íåñêîëüêî èíñòðóêöèé â ðàçíîé ñòåïåíè ãîòîâíîñòè.
Èñïîëíåíèå èíñòðóêöèé ìîæåò áûòü ðàçäåëåíî íà íåñêîëüêî ñòàäèé: âûáîðêà, äåêîäèðîâàíèå, èñïîëíåíèå, çàïèñü ðåçóëüòàòîâ. Êîíâåéåð èíñòðóêöèé ìîæåò óìåíüøèòü
÷èñëî öèêëîâ íà èíñòðóêöèþ ïîñðåäñòâîì îäíîâðåìåííîãî èñïîëíåíèÿ íåñêîëüêèõ èíñòðóêöèé, íàõîäÿùèõñÿ íà ðàçíûõ ñòàäèÿõ. Ïðè ïðàâèëüíîé àïïàðàòíîé ðåàëèçàöèè êîíâåéåð,
èìåþùèé n ñòàäèé ìîæåò îäíîâðåìåííî èñïîëíÿòü n ïîñëåäîâàòåëüíûõ èíñòðóêöèé. Íîâàÿ
èíñòðóêöèÿ ìîæåò ïðèíèìàòüñÿ ê èñïîëíåíèþ íà êàæäîì öèêëå, è ýôôåêòèâíàÿ ñêîðîñòü
èñïîëíåíèÿ, òàêèì îáðàçîì, åñòü îäèí öèêë íà èíñòðóêöèþ. Îäíàêî, ýòî ïðåäïîëàãàåò, ÷òî
êîíâåéåð âñåãäà çàïîëíåí ïîëåçíûìè èíñòðóêöèÿìè è íåò çàäåðæåê â ïðîõîæäåíèè èíñòðóêöèé ÷åðåç êîíâåéåð.
Óïðàâëåíèå êîíâåéåðîì èíñòðóêöèé òðåáóåò íàäëåæàùåãî ýôôåêòèâíîãî óïðàâëåíèÿ òàêèìè ñîáûòèÿìè, êàê ïåðåõîäû, èñêëþ÷åíèÿ èëè ïðåðûâàíèÿ, êîòîðûå ìîãóò ïîëíîñòüþ
íàðóøèòü ïîòîê èíñòðóêöèé. Íàïðèìåð, ðåçóëüòàò óñëîâíîãî ïåðåõîäà èçâåñòåí, òîëüêî êîãäà
ýòà èíñòðóêöèÿ áóäåò èñïîëíåíà. Åñëè êîíâåéåð áûë çàïîëíåí èíñòðóêöèÿìè, ñëåäóþùèìè
çà èíñòðóêöèåé óñëîâíîãî ïåðåõîäà è ïåðåõîä ñîñòîÿëñÿ, òî âñå ýòè èíñòðóêöèè äîëæíû áûòü
âûáðîøåíû èç êîíâåéåðà.
Áîëåå òîãî, âíóòðè êîíâåéåðà ìîãóò îêàçàòüñÿ âçàèìîçàâèñèìûå èíñòðóêöèè. Íàïðèìåð, åñëè èíñòðóêöèÿ â ñòàäèè äåêîäèðîâàíèÿ äîëæíà ÷èòàòü èç ÿ÷åéêè ïàìÿòè, çíà÷åíèå
êîòîðîé ÿâëÿåòñÿ ðåçóëüòàòîì ðàáîòû èíñòðóêöèè, íàõîäÿùåéñÿ â ñòàäèè èñïîëíåíèÿ, òî êîíâåéåð áóäåò îñòàíîâëåí íà îäèí öèêë, ïîñêîëüêó ýòîò ðåçóëüòàò áóäåò äîñòóïåí òîëüêî ïîñëå
ñòàäèè çàïèñè ðåçóëüòàòîâ. Ïîýòîìó êîìïèëÿòîðó íåîáõîäèìî ïåðåóïîðÿäî÷èòü èíñòðóêöèè â ïðîãðàììå òàê, ÷òîáû ïî-âîçìîæíîñòè èçáåæàòü çàâèñèìîñòåé ìåæäó èíñòðóêöèÿìè
âíóòðè êîíâåéåðà.
Äëÿ óìåíüøåíèÿ âðåìåíè ïðîñòîÿ êîíâåéåðà ïðèìåíÿþò ðÿä ìåð.
58
Òàáëèöà ðåãèñòðîâ (register scoreboarding)
Ïåðåèìåíîâàíèå ðåãèñòðîâ (register renaming)
ïîçâîëÿåò ïðîñëåäèòü çà èñïîëüçîâàíèåì ðåãèñòðîâ. Îíà èìååò áèò äëÿ êàæäîãî ðåãèñòðà ïðîöåññîðà. Åñëè ýòîò áèò
óñòàíîâëåí, òî ðåãèñòð íàõîäèòñÿ â ñîñòîÿíèè îæèäàíèÿ çàïèñè ðåçóëüòàòà. Ïîñëå çàïèñè ðåçóëüòàòà ýòîò áèò ñáðàñûâàåòñÿ, ðàçðåøàÿ èñïîëüçîâàíèå ýòîãî ðåãèñòðà. Åñëè
ýòîò áèò ñáðîøåí äëÿ âñåõ ðåãèñòðîâ, çíà÷åíèÿ êîòîðûõ èñïîëüçóþòñÿ â òåêóùåé èíñòðóêöèè, òî åå ìîæíî âûïîëíÿòü, íå äîæèäàÿñü çàâåðøåíèÿ èñïîëíåíèÿ ïðåäûäóùèõ
èíñòðóêöèé.
ÿâëÿåòñÿ àïïàðàòíîé òåõíèêîé
óìåíüøåíèÿ êîíôëèêòîâ èç-çà ðåãèñòðîâûõ ðåñóðñîâ. Êîìïèëÿòîðû ïðåîáðàçóþò ÿçûêè âûñîêîãî óðîâíÿ â àññåìáëåðíûé êîä, íàçíà÷àÿ ðåãèñòðàì òå èëè èíûå çíà÷åíèÿ. Â
ñóïåðñêàëÿðíîì ïðîöåññîðå îïåðàöèÿ ìîæåò ïîòðåáîâàòü ðåãèñòð äî òîãî, êàê ïðåäûäóùàÿ èíñòðóêöèÿ çàêîí÷èëà èñïîëüçîâàíèå ýòîãî ðåãèñòðà. Ýòî ñîñòîÿíèå íå ÿâëÿåòñÿ
êîíôëèêòîì äàííûõ, ïîñêîëüêó ýòîé îïåðàöèè íå òðåáóåòñÿ çíà÷åíèå ðåãèñòðà, à òîëüêî ñàì ðåãèñòð. Îäíàêî, ýòà ñèòóàöèÿ ïðèâîäèò ê îñòàíîâêå êîíâåéåðà äî îñâîáîæäåíèÿ ðåãèñòðà. Èäåÿ ðàçðåøåíèÿ ýòîé ïðîáëåìû ñîñòîèò â ñëåäóþùåì: áåðåì ñâîáîäíûé
ðåãèñòð, ïåðåèìåíîâûâàåì åãî äëÿ ñîîòâåòñòâèÿ ïàðàìåòðàì èíñòðóêöèè, è äàåì èíñòðóêöèè åãî èñïîëüçîâàòü â êà÷åñòâå òðåáóåìîãî åé ðåãèñòðà.
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
DR
AF
C T
T
Çàäåðæêè âíóòðè êîíâåéåðà ìîãóò áûòü òàêæå âûçâàíû âðåìåíåì äîñòóïà ê îïåðàòèâíîé
ïàìÿòè DRAM, êîòîðîå íàìíîãî ïðåâûøàåò âðåìÿ öèêëà. Ýòà ïðîáëåìà â çíà÷èòåëüíîé ñòåïåíè ñíèìàåòñÿ ïðè èñïîëüçîâàíèè êýø ïàìÿòè è áóôåðà ïðåäâûáîðêè èíñòðóêöèé (î÷åðåäè
èíñòðóêöèé).
Òàê êàê ïîòîê èíñòðóêöèé â CISC ïðîöåññîðå íåðåãóëÿðíûé è âðåìÿ èñïîëíåíèÿ îäíîé èíñòðóêöèè ( ) íå ïîñòîÿííî, òî êîíâåéåðèçàöèÿ â ýòîì ñëó÷àå èìååò ñåðüåçíûé
íåäîñòàòîê, äåëàþùèé åå ìàëîïðèãîäíîé ê èñïîëüçîâàíèþ â CISC ïðîöåññîðàõ: èìåííî, îíà
ïðèâîäèò ê î÷åíü ñèëüíîìó óñëîæíåíèþ ïðîöåññîðà.
RISC ïðîöåññîðû èñïîëüçóþò îäèí è òîò æå ôîðìàò âñåõ èíñòðóêöèé äëÿ òîãî, ÷òîáû
óñêîðèòü äåêîäèðîâàíèå è óïðîñòèòü óïðàâëåíèå êîíâåéåðîì, ïîýòîìó âñå èíñòðóêöèè èñïîëíÿþòñÿ çà îäèí öèêë.
Îäíèì èç ñïîñîáîâ äàëüíåéøåãî ïîâûøåíèÿ áûñòðîäåéñòâèÿ ÿâëÿåòñÿ êîíâåéåðèçàöèÿ
ñòàäèé êîíâåéåðà. Òàêèå ïðîöåññîðû íàçûâàþòñÿ ñóïåðêîíâåéåðíûìè. Ïðè òàêîì ïîäõîäå
êàæäàÿ ñòàäèÿ êîíâåéåðà, òàêàÿ êàê êýø (ñì. íèæå) èëè ÀËÓ (àðèôìåòè÷åñêîå è ëîãè÷åñêîå óñòðîéñòâî), ìîæåò ïðèíèìàòü íîâóþ èíñòðóêöèþ êàæäûé öèêë, äàæå åñëè ýòà ñòàäèÿ
íå çàâåðøèëà èñïîëíåíèå òåêóùåé èíñòðóêöèè. Îòìåòèì, ÷òî äîáàâëåíèå íîâûõ óðîâíåé
êîíâåéåðèçàöèè èìååò ñìûñë òîëüêî â ñëó÷àå, åñëè ðàçðàáîò÷èê ìîæåò çíà÷èòåëüíî óâåëè÷èòü ÷àñòîòó ïðîöåññîðà. Îäíàêî, óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè çà ñ÷åò óâåëè÷åíèÿ
âíóòðåííåé ÷àñòîòû ïðîöåññîðà èìååò ðÿä íåäîñòàòêîâ. Âî-ïåðâûõ, ýòî óâåëè÷èâàåò ïîòðåáëåíèå ýíåðãèè ïðîöåññîðîì, ÷òî äåëàåò ñóïåðêîíâåéåðíûå ïðîöåññîðû ìàëîïðèãîäíûìè äëÿ
âñòðàèâàåìûõ ñèñòåì. Âî-âòîðûõ, ýòî ââîäèò íîâûå òðóäíîñòè â ñîïðÿæåíèè ïðîöåññîðà ñ
ïàìÿòüþ íèæíåãî óðîâíÿ, òàêîé êàê DRAM. Áûñòðîäåéñòâèå ýòîé ïàìÿòè ðàñòåò íå òàê
áûñòðî, êàê ñêîðîñòü ïðîöåññîðîâ, ïîýòîìó ÷åì áûñòðåå ïðîöåññîð, òåì áîëüøå ðàçðûâ â
ïðîèçâîäèòåëüíîñòè ìåæäó íèì è îñíîâíîé ïàìÿòüþ.
Äðóãèì ñïîñîáîì óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðîâ ÿâëÿåòñÿ âûïîëíåíèå áîëåå ÷åì îäíîé îïåðàöèè îäíîâðåìåííî. Òàêèå ïðîöåññîðû íàçûâàþòñÿ ñóïåðñêàëÿðíûìè.
Îíè èìåþò äâà èëè áîëåå êîíâåéåðîâ èíñòðóêöèé, ðàáîòàþùèõ ïàðàëëåëüíî, ÷òî çíà÷èòåëüíî óâåëè÷èâàåò ñêîðîñòü îáðàáîòêè ïîòîêà èíñòðóêöèé. Îäíèì èç äîñòîèíñòâ ñóïåðñêàëÿðíîé àðõèòåêòóðû ÿâëÿåòñÿ âîçìîæíîñòü óâåëè÷åíèÿ ïðîèçâîäèòåëüíîñòè áåç íåîáõîäèìîñòè óâåëè÷åíèÿ ÷àñòîòû ïðîöåññîðà. Ñóïåðñêàëÿðíîìó ïðîöåññîðó òðåáóåòñÿ áîëåå øèðîêèé
äîñòóï ê ïàìÿòè, òàê, ÷òîáû îí ìîã áðàòü ñðàçó ãðóïïó èç íåñêîëüêèõ èíñòðóêöèé äëÿ èñïîëíåíèÿ. Äèñïåò÷åð àíàëèçèðóåò ýòè ãðóïïû è çàïîëíÿåò êàæäûé èç êîíâåéåðîâ òàê, ÷òîáû
ñíèçèòü âçàèìîçàâèñèìîñòü äàííûõ è êîíôëèêòû ðåãèñòðîâ. Âûïîëíåíèå èíñòðóêöèé ìîæåò áûòü íå ïî ïîðÿäêó ïîñòóïëåíèÿ, òàê, ÷òîáû êîìàíäû ïåðåõîäà áûëè ïðîàíàëèçèðîâàíû
ðàíüøå, óáèðàÿ çàäåðæêè â ñëó÷àå îñóùåñòâëåíèÿ ïåðåõîäà. Êîìïèëÿòîð äîëæåí îïòèìèçèðîâàòü êîä äëÿ îáåñïå÷åíèÿ çàïîëíåíèÿ âñåõ êîíâåéåðîâ.
Òðåáîâàíèå îäíîãî è òîãî æå ðåñóðñà íåñêîëüêèìè èíñòðóêöèÿìè áëîêèðóåò èõ ïðîäâèæåíèå ïî êîíâåéåðó è ïðèâîäèò ê âñòàâêå öèêëîâ îæèäàíèÿ òðåáóåìîãî ðåñóðñà. Ñóïåðñêàëÿðíàÿ àðõèòåêòóðà ñ òðåìÿ èñïîëíÿþùèìè óñòðîéñòâàìè áóäåò ïîëíîñòüþ ýôôåêòèâíîé, òîëüêî åñëè ïîòîê èíñòðóêöèé îáåñïå÷èâàåò îäíîâðåìåííîå èñïîëüçîâàíèå ýòèõ òðåõ óñòðîéñòâ.
Äëÿ îáåñïå÷åíèÿ ýòîãî óñëîâèÿ ñ ìèíèìàëüíûìè ðàñõîäàìè â ïðîöåññîðå âûäåëÿþò èñïîëíÿþùèå óñòðîéñòâà, ðàáîòàþùèå íåçàâèñèìî:
Öåëî÷èñëåííîå óñòðîéñòâî (IU, Integer Unit) âûïîëíÿåò öåëî÷èñëåííûå îïåðàöèè
(àðèôìåòè÷åñêèå, ëîãè÷åñêèå è îïåðàöèè ñðàâíåíèÿ) â ñâîåì ÀËÓ.
Óñòðîéñòâî äëÿ ðàáîòû ñ ïëàâàþùåé òî÷êîé
Óñòðîéñòâî óïðàâëåíèÿ ïàìÿòüþ
(FPU, Floating Point Unit) îáû÷íî îòäåëåíî îò öåëî÷èñëåííîãî óñòðîéñòâà, êîòîðîå ðàáîòàåò òîëüêî ñ öåëûìè ÷èñëàìè è ÷èñëàìè ñ ôèêñèðîâàííîé òî÷êîé. Áîëüøèíñòâî FPU ñîâìåñòèìû ñî ñòàíäàðòîì
ANSI/IEEE äëÿ äâîè÷íîé àðèôìåòèêè ñ ïëàâàþùåé òî÷êîé.
(MMU, Memory Management Unit) âû÷èñëÿåò
ðåàëüíûé ôèçè÷åñêèé àäðåñ ïî âèðòóàëüíîìó àäðåñó.
59
11. Àðõèòåêòóðû ïðîöåññîðîâ
(BU, Branch Unit) çàíèìàåòñÿ ïðåäñêàçàíèåì óñëîâíûõ ïåðåõîäîâ, äëÿ òîãî, ÷òîáû èçáåæàòü ïðîñòîÿ êîíâåéåðà â îæèäàíèè
ðåçóëüòàòà âû÷èñëåíèÿ óñëîâèÿ ïåðåõîäà.
Óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ
T
Ïîñêîëüêó óñëîâíûå ïåðåõîäû ìîãóò ñâåñòè íà íåò âñå ïðåèìóùåñòâà êîíâåéåðíîé îðãàíèçàöèè ïðîöåññîðà, îñòàíîâèìñÿ áîëåå ïîäðîáíî íà ïðèåìàõ, èñïîëüçóåìûõ BU äëÿ óìåíüøåíèÿ èõ íåãàòèâíîãî âëèÿíèÿ.
(delay slots). Èíñòðóêöèþ, ïåðåäàþùóþ óïðàâëåíèå îò îäíîé
÷àñòè ïðîãðàììû äðóãîé, òðóäíî èñïîëíèòü çà îäèí öèêë. Îáû÷íî çàãðóçêà ïðîöåññîðíîãî óêàçàòåëÿ íà ñëåäóþùóþ èíñòðóêöèþ òðåáóåò îäèí öèêë, ïðåäâûáîðêà íîâîé
èíñòðóêöèè òðåáóåò åùå îäèí. Äëÿ èçáåæàíèÿ ïðîñòîÿ, íåêîòîðûå RISC ïðîöåññîðû
(íàïðèìåð, SPARC) ïîçâîëÿþò âñòàâèòü äîïîëíèòåëüíóþ èíñòðóêöèþ â òàê íàçûâàåìûé îòëîæåííûé ñëîò. Ýòà èíñòðóêöèÿ, êîòîðàÿ ðàñïîëîæåíà íåïîñðåäñòâåííî ïîñëå
êîìàíäû ïåðåõîäà, íî áóäåò âûïîëíåíà äî òîãî, êàê áóäåò ñîâåðøåí ïåðåõîä.
Îòëîæåííûå ñëîòû
AF
Îäíàêî, äëÿ ñóïåðñêàëÿðíûõ RISC ïðîöåññîðîâ îòëîæåííûå ñëîòû ðàáîòàþò íå î÷åíü
õîðîøî. Çàäåðæêà ïðè ïåðåõîäå ìîæåò áûòü äâà öèêëà, à ñóïåðñêàëÿðíûé ïðîöåññîð,
êîòîðûé âûïîëíÿåò çà öèêë n èíñòðóêöèé, äîëæåí íàéòè n èíñòðóêöèé äëÿ ïîìåùåíèÿ
â êîíâåéåðû.
Áèòû ïðåäñêàçàíèÿ ïåðåõîäà â èíñòðóêöèè. Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, PowerPC) èñïîëüçóþò áèòû ïðåäñêàçàíèÿ ïåðåõîäà, êîòîðûå óñòàíàâëèâàåò êîìïèëÿòîð â èíñòðóêöèè ïåðåõîäà, è ïðåäñêàçûâàþùèå, áóäåò èëè íåò ñîâåðøåí ïåðåõîä.
DR
Ñïåêóëÿòèâíîå èñïîëíåíèå èíñòðóêöèé (speculative execution). Íåêîòîðûå RISC
ïðîöåññîðû (íàïðèìåð, ñòàðøèå ìîäåëè ñåìåéñòâ PowerPC è SPARC) èñïîëüçóþò òàê
íàçûâàåìîå 'ñïåêóëÿòèâíîå' èñïîëíåíèå èíñòðóêöèé: ïðîöåññîð çàãðóæàåò â êîíâåéåð è
íà÷èíàåò èñïîëíÿòü èíñòðóêöèè, íàõîäÿùèåñÿ çà òî÷êîé âåòâëåíèÿ, åùå íå çíàÿ, ïðîèçîéäåò ïåðåõîä èëè íåò. Ïðè ýòîì ÷àñòî âûáèðàåòñÿ íàèáîëåå âåðîÿòíàÿ âåòâü ïðîãðàììû (íà îñíîâå òîãî èëè èíîãî ïîäõîäà, ñì. íèæå). Åñëè ïîñëå èñïîëíåíèÿ êîìàíäû
ïåðåõîäà îêàçàëîñü, ÷òî ïðîöåññîð íà÷àë èñïîëíÿòü íå òó âåòâü, òî âñå çàãðóæåííûå â
êîíâåéåð èíñòðóêöèè èç ýòîé âåòâè è ðåçóëüòàòû èõ îáðàáîòêè ñáðàñûâàþòñÿ, è çàãðóæàåòñÿ ïðàâèëüíàÿ âåòâü.
Ýâðèñòè÷åñêîå ïðåäñêàçàíèå ïåðåõîäîâ. Íåêîòîðûå RISC ïðîöåññîðû óìåíüøàþò
çàäåðæêè, âíîñèìûå ïåðåõîäàìè, çà ñ÷åò èñïîëüçîâàíèÿ âñòðîåííîãî ïðåäñêàçàòåëÿ
ïåðåõîäîâ. Îí ïðåäñêàçûâàåò, ÷òî ïåðåõîäû âïåðåä (ïðîâåðêè) ïðîèçâåäåíû íå áóäóò,
à ïåðåõîäû íàçàä (öèêëû) - áóäóò.
Äëÿ ýôôåêòèâíîé ðàáîòû óñòðîéñòâà ïðåäñêàçàíèÿ ïåðåõîäà âàæíî, ÷òîáû êîä óñëîâèÿ
äëÿ óñëîâíîãî ïåðåõîäà áûë âû÷èñëåí êàê ìîæíî ðàíüøå (çà íåñêîëüêî èíñòðóêöèé äî ñàìîé
êîìàíäû ïåðåõîäà). Ýòîãî äîáèâàþòñÿ íåñêîëüêèìè ñïîñîáàìè.
Íåçàâèñèìîñòü àðèôìåòè÷åñêèõ îïåðàöèé è êîäà óñëîâèÿ.
 CISC àðõèòåêòóðàõ âñå àðèôìåòè÷åñêèå îïåðàöèè âûñòàâëÿþò êîä óñëîâèÿ ïî ñâîåìó ðåçóëüòàòó. Ýòî
ñäåëàíî äëÿ óìåíüøåíèÿ ôàêòîðà ÷èñëà èíñòðóêöèé íà çàäà÷ó, ïîñêîëüêó åñòü âåðîÿòíîñòü òîãî, ÷òî ñëåäóþùàÿ èíñòðóêöèÿ áóäåò âû÷èñëÿòü êîä óñëîâèÿ ïî ðåçóëüòàòó
ïðåäûäóùåé èíñòðóêöèè è, ñëåäîâàòåëüíî, ìîæåò áûòü óäàëåíà. Îäíàêî ýòî ïðèâîäèò ê òîìó, ÷òî ìåæäó êîìàíäîé âû÷èñëåíèÿ êîäà óñëîâèÿ è êîìàíäîé ïåðåõîäà î÷åíü
òðóäíî âñòàâèòü ïîëåçíûå èíñòðóêöèè, òàê êàê îíè èçìåíÿò êîä óñëîâèÿ.  RISC àðõèòåêòóðàõ àðèôìåòè÷åñêèå îïåðàöèè íå èçìåíÿþò êîä óñëîâèÿ (åñëè ïðîòèâíîå ÿâíî
íå óêàçàíî â èíñòðóêöèè, ñì. íèæå). Ïîýòîìó âîçìîæíî ìåæäó èíñòðóêöèåé, âû÷èñëÿþùåé êîä óñëîâèÿ, è êîìàíäîé ïåðåõîäà âñòàâèòü äðóãèå èíñòðóêöèè (ïåðåóïîðÿäî÷èâ
èõ). Ýòî ïîçâîëèò çàðàíåå óçíàòü, ïðîèçîéäåò èëè íåò ïåðåõîä è çàãðóçèòü êîíâåéåð
èíñòðóêöèÿìè.
I
60
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
T
Ïîñêîëüêó âîçìîæíà ñèòóàöèÿ, êîãäà ñëåäóþùàÿ èíñòðóêöèÿ áóäåò âû÷èñëÿòü êîä óñëîâèÿ ïî ðåçóëüòàòó ïðåäûäóùåé èíñòðóêöèè, òî â RISC àðõèòåêòóðàõ ÷àñòü (SPARC)
èëè âñå (PowerPC) àðèôìåòè÷åñêèå îïåðàöèè òàêæå èìåþò âòîðóþ ôîðìó, â êîòîðîé
áóäåò âûñòàâëÿòüñÿ êîä óñëîâèÿ ïî èõ ðåçóëüòàòó. Òàêèì îáðàçîì, ÷àñòü èëè âñå àðèôìåòè÷åñêèå îïåðàöèè ïðèñóòñòâóþò â äâóõ âàðèàíòàõ: îäèí íå èçìåíÿåò êîä óñëîâèÿ
(ïîäàâëÿþùåå áîëüøèíñòâî ñëó÷àåâ èñïîëüçîâàíèÿ), à äðóãîé âû÷èñëÿåò êîä óñëîâèÿ
ïî ðåçóëüòàòó îïåðàöèè.
Èñïîëüçîâàíèå íåñêîëüêèõ ðàâíîïðàâíûõ ðåãèñòðîâ ñ êîäîì óñëîâèÿ.
Èñïîëüçîâàíèå êîäà óñëîâèÿ â êàæäîé èíñòðóêöèè.
AF
Íåêîòîðûå RISC ïðîöåññîðû (íàïðèìåð, PowerPC) èñïîëüçóþò íåñêîëüêî ðàâíîïðàâíûõ ðåãèñòðîâ, â êîòîðûõ îáðàçóåòñÿ ðåçóëüòàò âû÷èñëåíèÿ óñëîâèÿ. Íàä ýòèìè ðåãèñòðàìè
îïðåäåëåíû ëîãè÷åñêèå îïåðàöèè, ÷òî èíîãäà ïîçâîëÿåò îïòèìèçèðóþùåìó êîìïèëÿòîðó çàìåíèòü êîìàíäû ïåðåõîäà ïðè âû÷èñëåíèè ñëîæíûõ ëîãè÷åñêèõ âûðàæåíèé íà
êîìàíäû ëîãè÷åñêèõ îïåðàöèé ñ ýòèìè ðåãèñòðàìè.
Íåêîòîðûå RISC ïðîöåññîðû
(íàïðèìåð, ARM) èñïîëüçóþò êîä óñëîâèÿ â êàæäîé èíñòðóêöèè. Â ôîðìàòå êàæäîé
èíñòðóêöèè ïðåäóñìîòðåíî ïîëå, ãäå êîìïèëÿòîðîì çàïèñûâàåòñÿ êîä óñëîâèÿ, ïðè êîòîðîì îíà áóäåò âûïîëíåíà. Åñëè â ìîìåíò èñïîëíåíèÿ èíñòðóêöèè êîä óñëîâèÿ íå
òàêîé, êàê â èíñòðóêöèè, òî îíà èãíîðèðóåòñÿ. Ýòî ïîçâîëÿåò âîîáùå îáîéòèñü áåç êîìàíä ïåðåõîäà ïðè âû÷èñëåíèè ðåçóëüòàòîâ óñëîâíûõ îïåðàöèé.
11.1.4. Êýø ïàìÿòü
DR
Âðåìÿ, íåîáõîäèìîå äëÿ âûáîðêè èíñòðóêöèé, â îñíîâíîì çàâèñèò îò ïîäñèñòåìû ïàìÿòè
è ÷àñòî ÿâëÿåòñÿ îãðàíè÷èâàþùèì ôàêòîðîì äëÿ RISC ïðîöåññîðîâ â ñèëó âûñîêîé ñêîðîñòè èñïîëíåíèÿ èíñòðóêöèé. Íàïðèìåð, åñëè ïðîöåññîð ìîæåò áðàòü èíñòðóêöèè òîëüêî èç
DRAM ñ âðåìåíåì äîñòóïà 60 ns, òî ñêîðîñòü èõ îáðàáîòêè (ïðè ðàñ÷åòå îäíà èíñòðóêöèÿ
çà öèêë) áóäåò ñîîòâåòñòâîâàòü òàêòîâîé ÷àñòîòå 16:7 MHz. Ýòà ïðîáëåìà â çíà÷èòåëüíîé
ñòåïåíè ñíèìàåòñÿ çà ñ÷åò èñïîëüçîâàíèÿ êýø ïàìÿòè.
Êýø ïàìÿòü (cache) ýòî áûñòðîå ñòàòè÷åñêîå ÎÇÓ (SRAM), âñòàâëåííàÿ ìåæäó èñïîëíèòåëüíûìè óñòðîéñòâàìè è ñèñòåìíûì ÎÇÓ (RAM). Îíà ñîõðàíÿåò ïîñëåäíèå èñïîëüçîâàííûå èíñòðóêöèè è äàííûå, òàê, ÷òî öèêëû è îïåðàöèè ñ ìàññèâàìè áóäóò âûïîëíÿòüñÿ
áûñòðåå. Êîãäà èñïîëíÿþùåìó óñòðîéñòâó íóæíû äàííûå è îíè íå íàõîäÿòñÿ â êýø ïàìÿòè,
òî ýòî êýø-ïðîìàõ: ïðîöåññîð äîëæåí îáðàòèòüñÿ ê âíåøíåé ïàìÿòè äëÿ âûáîðêè äàííûõ.
Åñëè òðåáóåìûå äàííûå íàõîäÿòñÿ â êýøå, òî ýòî êýø-ïîïàäàíèå: äîñòóï ê âíåøíåé ïàìÿòè
íå òðåáóåòñÿ.
Òàêèì îáðàçîì, êýøè ðàçãðóæàþò âíåøíèå øèíû, óìåíüøàÿ ïîòðåáíîñòü â íèõ ïðîöåññîðà. Ýòî ïîçâîëÿåò íåñêîëüêèì ïðîöåññîðàì ðàçäåëÿòü âíåøíèå øèíû áåç óìåíüøåíèÿ ïðîèçâîäèòåëüíîñòè êàæäîãî èç íèõ.
Êýø ñîäåðæèò ñòðîêè èç íåñêîëüêèõ ïîñëåäîâàòåëüíûõ áàéòîâ (îáû÷íî 32 áàéòà), êîòîðûå çàãðóæàþòñÿ ïðîöåññîðîì, èñïîëüçóÿ òàê íàçûâàåìûé èìïóëüñíûé (èëè áëî÷íûé)
äîñòóï (burst access). Äàæå åñëè CPU íóæåí îäèí áàéò, âñå ðàâíî áóäåò çàãðóæåíà öåëàÿ ñòðîêà, òàê êàê âåðîÿòíî, ÷òî òåì ñàìûì áóäóò çàãðóæåíû ñëåäóþùèå âûïîëíÿåìûå
èíñòðóêöèè èëè èñïîëüçóåìûå äàííûå. Áëî÷íûå ïåðåäà÷è îáåñïå÷èâàåò âûñîêèå ñêîðîñòè
ïåðåäà÷è äëÿ èíñòðóêöèé èëè äàííûõ â ïîñëåäîâàòåëüíûõ àäðåñàõ ïàìÿòè. Ïðè òàêèõ ïåðåäà÷àõ òîëüêî àäðåñ ïåðâîé èíñòðóêöèè èëè äàííîãî áóäåò ïîñëàí â ïîäñèñòåìó âíåøíåé
ïàìÿòè. Âñå ïîñëåäóþùèå çàïðîñû èíñòðóêöèé èëè äàííûõ â ïîñëåäîâàòåëüíûõ àäðåñàõ ïàìÿòè íå òðåáóþò äîïîëíèòåëüíîé ïåðåäà÷è àäðåñà. Íàïðèìåð, çàãðóçêà 16 áàéòîâ òðåáóåò 5
öèêëîâ, åñëè MC68040 äåëàåò áëî÷íóþ ïåðåäà÷ó äëÿ çàãðóçêè ñòðîêè êýøà, è 8 öèêëîâ, åñëè
ïàìÿòü íå ïîääåðæèâàåò áëî÷íûé ðåæèì ïåðåäà÷è.
Êýø, â êîòîðîì âìåñòå õðàíÿòñÿ äàííûå è èíñòðóêöèè, íàçûâàåòñÿ åäèíûì êýøåì. Îäíèì èç ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ÿâëÿåòñÿ ââåäåíèå â ïðîöåññîðå òðåõ øèí:
àäðåñà, èíñòðóêöèé è äàííûõ. Â Ãàðâàðäñêîé àðõèòåêòóðå êýøà ðàçäåëÿþò êýøè äëÿ
èíñòðóêöèé è äàííûõ äëÿ óäâîåíèÿ ýôôåêòèâíîñòè êýø ïàìÿòè.  òèïè÷íîé Ãàðâàðäñêîé
61
11. Àðõèòåêòóðû ïðîöåññîðîâ
T
àðõèòåêòóðå ïðèñóòñòâóþò òðè âèäà êýø ïàìÿòè: ñïåöèàëüíûå êýøè (íàïðèìåð, TLB), âíóòðåííèå êýøè èíñòðóêöèé è äàííûõ (ïåðâîãî óðîâíÿ èëè L1 êýø) è âíåøíèé åäèíûé êýø
(âòîðîãî óðîâíÿ èëè L2 êýø). Â ïðîöåññîðàõ, èìåþùèõ èíòåãðèðîâàííûå êåøè ïåðâîãî
è âòîðîãî óðîâíåé (ò.å. âíóòðè êîðïóñà ïðîöåññîðà), ÷àñòî äîïîëíèòåëüíî óñòàíàâëèâàþò
åäèíûé êýø òðåòüåãî óðîâíÿ (L3) âíå ïðîöåññîðà. Îáû÷íî L1 êýø ðàáîòàåò íà ÷àñòîòå
ïðîöåññîðà è èìååò ðàçìåð 8. . . 32Êá, L2 êýø ðàáîòàåò íà ÷àñòîòå ïðîöåññîðà èëè åå ïîëîâèíå è èìååò ðàçìåð 128Êá. . . 4Ìá, L3 êýø ðàáîòàåò íà ÷àñòîòå âíåøíåé øèíû è èìååò ðàçìåð
512Êá. . . 8Ìá.
Êýøè äàííûõ â çàâèñèìîñòè îò èõ ïîâåäåíèÿ ïðè çàïèñè äàííûõ â êýø ðàçäåëÿþò íà äâà
âèäà.
AF
1. Êýø ñ ïðÿìîé çàïèñüþ (write-through cache). Ýòîò âèä êýø ïàìÿòè ïðè çàïèñè â íåå
ñðàçó èíèöèèðóåò öèêë çàïèñè âî âíåøíþþ ïàìÿòü. Îñíîâíûì äîñòîèíñòâîì òàêîãî
êýøà ÿâëÿåòñÿ ïðîñòîòà è òî, ÷òî äàííûå â êýøå è â ïàìÿòè âñåãäà èäåíòè÷íû, ÷òî
óïðîùàåò ïîñòðîåíèå ìíîãîïðîöåññîðíûõ ñèñòåì.
2. Êýø ñ îáðàòíîé çàïèñüþ (write-back cache) Ýòîò âèä êýø ïàìÿòè ïðè çàïèñè â íåå
íå çàïèñûâàåò äàííûå ñðàçó âî âíåøíþþ ïàìÿòü. Çàïèñü â ïàìÿòü îñóùåñòâëÿåòñÿ
ïðè âûõîäå ñòðîêè èç êýøà èëè ïî çàïðîñó ñèñòåìû ñèíõðîíèçàöèè â ìíîãîïðîöåññîðíûõ ñèñòåìàõ. Òàêàÿ îðãàíèçàöèÿ êýø ïàìÿòè ìîæåò çíà÷èòåëüíî óñêîðèòü âûïîëíåíèå
öèêëîâ, â êîòîðûõ îáíîâëÿåòñÿ îäíà è òà æå ÿ÷åéêà ïàìÿòè (áóäåò çàïèñàíî òîëüêî ïîñëåäíåå, à íå âñå ïðîìåæóòî÷íûå çíà÷åíèÿ êàê â êýøå ñ ïðÿìîé çàïèñüþ). Äðóãèì
äîñòîèíñòâîì ÿâëÿåòñÿ óìåíüøåíèå ïîòðåáíîñòè ïðîöåññîðà âî âíåøíåé øèíå, ÷òî ïîçâîëÿåò ðàçäåëÿòü åå íåñêîëüêèì ïðîöåññîðàì. Íåäîñòàòêîì òàêîé îðãàíèçàöèè ÿâëÿåòñÿ
óñëîæíåíèå ñõåìû ñèíõðîíèçàöèè êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ.
 ñèëó åãî çíà÷èòåëüíî áîëüøåé ýôôåêòèâíîñòè, áîëüøèíñòâî ñîâðåìåííûõ ïðîöåññîðîâ èñïîëüçóþò êýø ñ îáðàòíîé çàïèñüþ.
Îðãàíèçàöèÿ êýø-ïàìÿòè. Êýø îñíîâàí íà ñðàâíåíèè àäðåñà. Äëÿ êàæäîé ñòðîêè
êýøà õðàíèòñÿ àäðåñ åå ïåðâîãî ýëåìåíòà, íàçûâàåìûé àäðåñîì ñòðîêè. Äëÿ óìåíüøåíèÿ
îáúåìà äîïîëíèòåëüíî õðàíèìîé èíôîðìàöèè (àäðåñîâ ñòðîê) è óñêîðåíèÿ ïîèñêà àäðåñà
èñïîëüçóþò íåñêîëüêî òåõíè÷åñêèõ ïðèåìîâ.
Ïóñòü äëèíà ñòðîêè åñòü 2b áàéò. Àäðåñà ñòðîê âûðîâíåíû íà ãðàíèöó ñâîåãî ðàçìåðà,
ò.å. ïîñëåäíèå b áèò àäðåñà íóëåâûå è ïîòîìó íå õðàíÿòñÿ (ò.å. ðàçìåð àäðåñà óìåíüøåí
äî 32 b áèò).
DR
62
Ôèêñèðóåòñÿ íåêîòîðîå i . Ñòðîêè õðàíÿòñÿ êàê îäèí èëè íåñêîëüêî ( N ) ìàññèâîâ, îòñîðòèðîâàííûìè ïî ïîðÿäêó i ìëàäøèõ áèòîâ àäðåñà (ò.å. ìëàäøèõ ñðåäè îñòàâøèõñÿ
32 b ). Òàêèì îáðàçîì, k -é ýëåìåíò ìàññèâà èìååò àäðåñ, áèòû êîòîðîãî â ïîçèöèÿõ îò
32 i b + 1 äî 32 b îáðàçóþò ÷èñëî, ðàâíîå k . Ýòî ïîçâîëÿåò íå õðàíèòü ýòè áèòû
(ò.å. ðàçìåð àäðåñà óìåíüøåí äî 32 b i áèò).
Êîìáèíàöèÿ ÷èñåë b è i ïîäáèðàåòñÿ òàê, ÷òîáû ìëàäøèõ b + i áèò ëîãè÷åñêîãî àäðåñà ñîâïàäàëè áû ñ ñîîòâåòñòâóþùèìè áèòàìè ôèçè÷åñêîãî àäðåñà ïðè ñòðàíè÷íîì
ïðåîáðàçîâàíèè (ò.å. áûëè áû ñìåùåíèåì â ñòðàíèöå). Ýòî ïîçâîëÿåò ïàðàëëåëüíî ïðîèçâîäèòü òðàíñëÿöèþ àäðåñà è ïîèñê â êýøå (ò.å. ïàðàëëåëüíî ðàáîòàòü MMU è êýøó).
Ïðè òèïè÷íîì ðàçìåðå ñòðàíèöû 4Kb ýòî îçíà÷àåò b + i = 12 .
Îïðåäåëåíèå òîãî, ñîäåðæèòñÿ ëè äàííûé àäðåñ â êýøå, ïðîèçâîäèòñÿ ñëåäóþùèì îáðàçîì. Áåðóòñÿ áèòû â ïîçèöèÿõ îò 32 i b + 1 äî 32 b , îáðàçóþùèå ÷èñëî k . Çàòåì
áåðóòñÿ ýëåìåíòû ñ íîìåðîì k â êàæäîì èç N ìàññèâîâ è ó ïîëó÷åííûõ N ñòðîê
ñðàâíèâàþòñÿ àäðåñà ñ 32 i b áèòàìè àäðåñà (êîòîðûå óæå òðàíñëèðîâàíû MMU â
ôèçè÷åñêèé àäðåñ). Åñëè îáíàðóæåíî ñîâïàäåíèå (ò.å. èìååò ìåñòî êýø-ïîïàäàíèå), òî
áåðåòñÿ áàéò ñ íîìåðîì b â ñòðîêå.
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
AF
T
Åñëè ðàññìàòðèâàåòñÿ âíåøíèé êýø, òî ñîãëàñîâûâàòü åãî ðàáîòó ñ MMU íå òðåáóåòñÿ, ïîñêîëüêó âíåøíèé êýø ðàáîòàåò óæå ñ ôèçè÷åñêèì àäðåñîì.
Ïðèìåð: äëÿ PowerPC 603 âûáðàíî b = 5 (ò.å. äëèíà ñòðîêè 32 áàéòà), i = 7 (ò.å. äëèíà
ìàññèâà 127), N = 2 (ò.å. èñïîëüçóþòñÿ äâà ìàññèâà).
Äëÿ êàæäîé ñòðîêè êýøà ñ îáðàòíîé çàïèñüþ ïîìèìî àäðåñà õðàíèòñÿ òàêæå ïðèçíàê
òîãî, ÷òî ýòà ñòðîêà ñîäåðæèò êîððåêòíûå äàííûå, ò.å. äàííûå â êýø ïàìÿòè è â îñíîâíîé
ïàìÿòè ñîâïàäàþò. Ýòîò ïðèçíàê èñïîëüçóåòñÿ äëÿ çàïèñè ñòðîêè â ïàìÿòü ïðè åå âûõîäå èç
êýø ïàìÿòè, à òàêæå â ìíîãîïðîöåññîðíûõ ñèñòåìàõ.
Àëãîðèòìû çàìåíû äàííûõ â êýø ïàìÿòè. Åñëè âñå ñòðîêè êýø ïàìÿòè ñîäåðæàò
êîððåêòíûå äàííûå, òî äëÿ îáåñïå÷åíèÿ êýøèðîâàíèÿ íîâûõ îáëàñòåé ïàìÿòè íåîáõîäèìî
âûáðàòü ñòðîêó, êîòîðàÿ áóäåò ïåðåçàïèñàíà. Ýòà ñòðîêà âûõîäèò èç êýøà è, åñëè òðåáóåòñÿ,
åå ñîäåðæèìîå áóäåò çàïèñàíî îáðàòíî â ïàìÿòü. Ñóùåñòâóþò òðè àëãîðèòìà çàìåíû äàííûõ
â êýøå:
âåðîÿòíîñòíûé
ñëó÷àéíîå ÷èñëî;
àëãîðèòì: â êà÷åñòâå íîìåðà ïåðåçàïèñûâàåìîé ñòðîêè èñïîëüçóåòñÿ
FIFO
àëãîðèòì: ïåðâàÿ çàïèñàííàÿ ñòðîêà áóäåò ïåðâîé ïåðåçàïèñàíà;
LRU
(Last Recently Used) àëãîðèòì: íàèìåíåå èñïîëüçóåìàÿ ñòðîêà áóäåò çàìåíåíà
íîâîé.
Äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðà ââîäÿòñÿ ðÿä ñïåöèàëüíûõ êýøåé.
TLB
BTC
(Translation Look-aside Buffers) - ýòî êýø ïàìÿòü, èñïîëüçóåìàÿ MMU äëÿ õðàíåíèÿ ðåçóëüòàòîâ ïîñëåäíèõ òðàíñëÿöèé ëîãè÷åñêîãî àäðåñà â ôèçè÷åñêèé. Ñîäåðæèò
ïàðû: ëîãè÷åñêèé àäðåñ è ñîîòâåòñòâóþùèé ôèçè÷åñêèé àäðåñ.
(Branch Target Cache) ýòî êýø ïàìÿòü, èñïîëüçóåìàÿ BU äëÿ õðàíåíèÿ àäðåñà
ïðåäûäóùåãî ïåðåõîäà è ïåðâîé èíñòðóêöèè, âûïîëíåííîé ïîñëå ïåðåõîäà. Èìååò öåëüþ
áåç çàäåðæêè çàïîëíèòü êîíâåéåð èíñòðóêöèåé, åñëè ïåðåõîä óæå ðàíåå ñîñòîÿëñÿ. BTC
ìîæåò çíà÷èòåëüíî ïîâûñèòü ïðîèçâîäèòåëüíîñòü ïðîöåññîðà, ó÷èòûâàÿ âðåìÿ, êîòîðîå
îí áû ïðîñòàèâàë â îæèäàíèè çàïîëíåíèÿ êîíâåéåðà ïîñëå ïåðåõîäà.
DR
Ñîãëàñîâàíèå êýøåé â ìóëüòèïðîöåññîðíûõ ñèñòåìàõ. Åñëè íåñêîëüêî ïðîöåññîðîâ
ïîäñîåäèíåíû ê îäíîé è òîé æå øèíå àäðåñà è äàííûõ è ðàçäåëÿþò îäíó è òó æå âíåøíþþ
ïàìÿòü, òî äîëæåí áûòü ðåàëèçîâàí îïðåäåëåííûé ñëåäÿùèé ìåõàíèçì (snooping) äëÿ òîãî,
÷òîáû âñå âíóòðèïðîöåññîðíûå êýøè âñåãäà ñîäåðæàëè îäíè è òå æå äàííûå.
Ðàññìîòðèì, íàïðèìåð, ñèñòåìó, ñîäåðæàùóþ äâà ïðîöåññîðà, êàæäûé èç êîòîðûõ ìîæåò
áðàòü óïðàâëåíèå îáùåé øèíîé. Åñëè ïðîöåññîð 1, óïðàâëÿþùèé â äàííûé ìîìåíò øèíîé,
çàïèñûâàåò â ÿ÷åéêó ïàìÿòè, êîòîðàÿ êýøèðîâàíà ïðîöåññîðîì 2, òî äàííûå â êýøå ïîñëåäíåãî ñòàíîâÿòñÿ óñòàðåâøèìè. Ñëåäÿùèé ìåõàíèçì ïîçâîëÿåò âòîðîìó ïðîöåññîðó îòñëåæèâàòü
ñîñòîÿíèå øèíû àäðåñà, äàæå åñëè îí íå ÿâëÿåòñÿ â äàííûé ìîìåíò ãëàâíûì (ò.å. óïðàâëÿþùèì âíåøíåé øèíîé). Åñëè íà øèíå ïîÿâèëñÿ àäðåñ êýøèðîâàííûõ äàííûõ, òî ýòè äàííûå
ïîìå÷àþòñÿ â êýøå êàê íåêîððåêòíûå. Êîãäà âòîðîé ïðîöåññîð ñòàíåò ãëàâíûì, îí äîëæåí
áóäåò âûáðàòü â ñëó÷àå íåîáõîäèìîñòè îáíîâëåííûå äàííûå èç ðàçäåëÿåìîé ïàìÿòè.
Åñëè ïðîöåññîð 1, óïðàâëÿþùèé â äàííûé ìîìåíò øèíîé, ÷èòàåò èç ÿ÷åéêè ïàìÿòè, êîòîðàÿ êýøèðîâàíà ïðîöåññîðîì 2, òî âîçìîæíî, ÷òî ðåàëüíûå äàííûå íàõîäÿòñÿ â êýøå ïðîöåññîðà 2 (åùå íå çàïèñàíû â ïàìÿòü, ò.å. ðåàëèçîâàí êýø ñ îáðàòíîé çàïèñüþ). Åñëè ýòî òàê, òî
ñëåäÿùèé ìåõàíèçì èíèöèèðóåò öèêë çàïèñè ñòðîêè êýøà ïðîöåññîðà 2, ñîäåðæàùåé çàòðåáîâàííûå ïðîöåññîðîì 1 äàííûå, â ðàçäåëÿþìóþ ïàìÿòü. Ïîñëå ýòîãî ýòè äàííûå ñòàíîâÿòñÿ
äîñòóïíûìè ïðîöåññîðó 1 è öèêë ÷òåíèÿ ïðîöåññîðà 1 ïðîäîëæàåòñÿ.
11.1.5. Ìíîãîïðîöåññîðíûå àðõèòåêòóðû
Îäíèì èç ñàìûõ ðàäèêàëüíûõ ñïîñîáîâ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè âû÷èñëèòåëüíîé
ñèñòåìû ÿâëÿåòñÿ óñòàíîâêà íåñêîëüêèõ ïðîöåññîðîâ. Âûäåëÿþò íåñêîëüêî òèïîâ ïîñòðîåíèÿ
63
11. Àðõèòåêòóðû ïðîöåññîðîâ
T
ìíîãîïðîöåññîðíûõ ñèñòåì â çàâèñèìîñòè îò ñòåïåíè ñâÿçè ìåæäó îòäåëüíûìè ïðîöåññîðàìè
â ñèñòåìå.
1. Ñèëüíî ñâÿçàííûå ïðîöåññîðû (èëè ñèììåòðè÷íûå ìóëüòèïðîöåññîðíûå ñèñòåìû,
symmetrical multiprocessor system, SMP). Âñå ïðîöåññîðû ðàçäåëÿþò îáùóþ øèíó è
îáùóþ ïàìÿòü, ìîãóò âûïîëíÿòü îäíó è òó æå çàäà÷ó, ïðè÷åì çàäà÷à ìîæåò ïåðåõîäèòü
îò îäíîãî ïðîöåññîðà äðóãîìó. Åñëè îäèí ïðîöåññîð îòêàçûâàåò, îí ìîæåò áûòü çàìåíåí
äðóãèì. SMP ïîäðàçóìåâàåò íàëè÷èå àïïàðàòíîãî ïðîòîêîëà ñèíõðîíèçàöèè êýøåé âñåõ
ïðîöåññîðîâ (ñì. âûøå). Òèïè÷íûé ïðèìåð: ïëàòà ñ äâóìÿ ïðîöåññîðàìè Pentium.
AF
2. Ñëàáî ñâÿçàííûå ïðîöåññîðû. ×àñòü ñèñòåìíîé ïàìÿòè ìîæåò áûòü ðàçäåëÿåìà, íî
ïåðåõîä çàäà÷è îò îäíîãî ïðîöåññîðà ê äðóãîìó íåâîçìîæåí. Ìåõàíèçìû ñèíõðîíèçàöèè
ñïåöèôè÷íû äëÿ êàæäîé ñèñòåìû (ïî÷òîâûå ÿùèêè, DPRAM, ïðåðûâàíèÿ). Òèïè÷íûé
ïðèìåð: ñòîéêà VME ñ íåñêîëüêèìè ïðîöåññîðíûìè ïëàòàìè è ðàçäåëÿåìîé ïàìÿòüþ
íà îäíîé èç ïëàò.
3. Ðàñïðåäåëåííûå ïðîöåññîðû. Íåñêîëüêî ïðîöåññîðîâ íå ðàçäåëÿþò íè îäíîãî îáùåãî ðåñóðñà, çà èñêëþ÷åíèåì ëèíèè ñâÿçè. Òèïè÷íûé ïðèìåð: ñîåäèíåííûå ïîñðåäñòâîì
Ethernet ðàáî÷èå ñòàíöèè.
Àðõèòåêòóðà SMP ÿâëÿåòñÿ ñàìîé äîðîãîé ñ òî÷êè çðåíèÿ àïïàðàòíîé ðåàëèçàöèè è ñàìîé
äåøåâîé ñ òî÷êè çðåíèÿ ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ. È íàîáîðîò, ðàñïðåäåëåííûå
ïðîöåññîðû ïî÷òè íå òðåáóþò àïïàðàòíûõ çàòðàò, íî ÿâëÿþòñÿ ñàìûì äîðîãèì ðåøåíèåì ñ
òî÷êè çðåíèÿ ðàçðàáîòêè ÏÎ. Äëÿ äîñòèæåíèÿ îïòèìàëüíîãî êîìïðîìèññà äëÿ êðóãà ðåøàåìûõ çàäà÷ èñïîëüçóþò ðàçëè÷íûå êîìáèíàöèè îïèñàííûõ âûøå òåõíîëîãèé.
11.1.6. Ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè
DR
 ñîâðåìåííûõ ïðîöåññîðàõ ïîääåðæêà ìíîãîçàäà÷íîñòè è ìíîãîïðîöåññîðíîñòè íå îãðàíè÷èâàåòñÿ àïïàðàòíîé ÷àñòüþ (âðîäå ðàññìîòðåííîãî âûøå ìåõàíèçìà ñèíõðîíèçàöèè êýøåé). Äëÿ îðãàíèçàöèè äîñòóïà ê êðèòè÷åñêèì ðàçäåëÿåìûì ðåñóðñàì íåîáõîäèìî â íàáîðå
èíñòðóêöèé ïðîöåññîðà ïðåäóñìîòðåòü ñïåöèàëüíûå èíñòðóêöèè, îáåñïå÷èâàþùèå äîñòóï ê
îáúåêòàì ñèíõðîíèçàöèè. Äåéñòâèòåëüíî, ñàìè îáúåêòû ñèíõðîíèçàöèè ÿâëÿþòñÿ ðàçäåëÿåìûìè, à äëÿ îáåñïå÷åíèÿ ïðàâèëüíîãî äîñòóïà ê ðàçäåëÿåìûì îáúåêòàì íåîáõîäèìî ââîäèòü
îáúåêòû ñèíõðîíèçàöèè, êîòîðûå â ñâîþ î÷åðåäü òîæå ÿâëÿþòñÿ ðàçäåëÿåìûìè è ò.ä. Äëÿ
âûõîäà èç ýòîãî çàìêíóòîãî êðóãà îïðåäåëÿþò íåêîòîðûå ïðèìèòèâíûå îáúåêòû ñèíõðîíèçàöèè, ê êîòîðûì âîçìîæåí îäíîâðåìåííûé äîñòóï íåñêîëüêèõ çàäà÷ èëè ïðîöåññîðîâ çà
ñ÷åò èñïîëüçîâàíèÿ ñïåöèàëüíûõ èíñòðóêöèé äîñòóïà.
Ðàññìîòðèì áîëåå ïîäðîáíî ñëó÷àé áóëåâñêîãî ñåìàôîðà. Çàäà÷à èëè ïðîöåññîð, ñîáèðàþùèéñÿ âçÿòü óïðàâëåíèå ðàçäåëÿåìûì ðåñóðñîì, íà÷èíàþò ñ ÷òåíèÿ çíà÷åíèÿ ñåìàôîðà. Åñëè
îí îáíóëåí, òî çàäà÷à èëè ïðîöåññîð äîëæíû æäàòü, ïîêà ðåñóðñ ñòàíåò äîñòóïíûì. Åñëè
ñåìàôîð óñòàíîâëåí â 1, òî çàäà÷à èëè ïðîöåññîð íåìåäëåííî åãî îáíóëÿþò, ÷òîáû ïîêàçàòü,
÷òî êîíòðîëèðóþò ðåñóðñ.  ïðîöåññå èçìåíåíèÿ ñåìàôîðà ìîæíî âûäåëèòü òðè ôàçû: ÷òåíèå, èçìåíåíèå, çàïèñü. Åñëè íà ñòàäèè ÷òåíèÿ âîçíèêíåò ïåðåêëþ÷åíèå çàäà÷ èëè äðóãîé
ïðîöåññîð ñòàíåò ãëàâíûì íà øèíå, òî ìîæåò âîçíèêíóòü îøèáêà, òàê êàê äâå çàäà÷è èëè äâà
ïðîöåññîðà êîíòðîëèðóþò îäèí è òîò æå ðåñóðñ. Àíàëîãè÷íî, åñëè ïåðåêëþ÷åíèå êîíòåêñòà
ïðîèçîéäåò ìåæäó öèêëîì ÷òåíèÿ è çàïèñè, òî äâà ïðîöåññà ìîãóò âçÿòü ñåìàôîð, ÷òî òîæå
ïðèâåäåò ê ñèñòåìíîé îøèáêå. Äëÿ ðåøåíèÿ ýòîé ïðîáëåìû áîëüøèíñòâî ïðîöåññîðîâ èìåþò
èíñòðóêöèþ, âûïîëíÿþùóþ íåäåëèìûé öèêë ÷òåíèå èçìåíåíèå çàïèñü. Ïîñêîëüêó ýòî
îäíà èíñòðóêöèÿ, òî ïåðåêëþ÷åíèå çàäà÷ âî âðåìÿ îïåðàöèè ñ ñåìàôîðîì íåâîçìîæíî. Òàê
êàê îíà ïðîèçâîäèò íåäåëèìûé öèêë, òî ïðîöåññîð, åå âûïîëíÿþùèé, îñòàåòñÿ âëàäåëüöåì
øèíû äî îêîí÷àíèÿ îïåðàöèè ñ ñåìàôîðîì.
64
11.1. Îñíîâíûå ÷åðòû àðõèòåêòóðû è èõ âëèÿíèå íà ñèñòåìû ðåàëüíîãî âðåìåíè
T
11.1.7. Âëèÿíèå òðåáîâàíèé ðåàëüíîãî âðåìåíè íà âûáîð àðõèòåêòóðû ïðîöåññîðà
Íå âñå îïèñàííûå âûøå ïðèåìû ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè ïðîöåññîðà óñêîðÿþò
ðàáîòó òèïè÷íîé ñèñòåìû ðåàëüíîãî âðåìåíè, à èíîãäà è çàìåäëÿþò åå. Ýòèì îáúÿñíÿåòñÿ
òî, ÷òî íà ðûíêå ñèñòåì äëÿ ÎÑРçíà÷èòåëüíóþ äîëþ çàíèìàþò ïðîöåññîðû ñ óñòàðåâøåé
CISC àðõèòåêòóðîé, èìåþùèå ïðèìèòèâíûé êîíâåéåð è êýø. Ðàññìîòðèì îñíîâíûå ïðè÷èíû
ýòîãî ïîëîæåíèÿ.
Óâåëè÷åíèå ÷èñëà ðåãèñòðîâ â RISC ïðîöåññîðàõ ïðèâîäèò ê óâåëè÷åíèþ âðåìåíè íà
ïåðåêëþ÷åíèå çàäà÷ è, â ÷àñòíîñòè, íà îáðàáîòêó ïðåðûâàíèé, ïîñêîëüêó íåîáõîäèìî
ñîõðàíÿòü/âîññòàíàâëèâàòü çíà÷èòåëüíîå êîëè÷åñòâî ðåãèñòðîâ.
Óâåëè÷åíèå ãëóáèíû êîíâåéåðà ïðèâîäèò ê óâåëè÷åíèþ âðåìåíè íà ïåðåêëþ÷åíèå çàäà÷
è, â ÷àñòíîñòè, íà îáðàáîòêó ïðåðûâàíèé, ïîñêîëüêó íåîáõîäèìî äîæäàòüñÿ âûïîëíåíèÿ
âñåõ èíñòðóêöèé â êîíâåéåðå.
Óâåëè÷åíèå ãëóáèíû êîíâåéåðà è ðàçìåðîâ êýøà íå âñåãäà ïðèâîäèò ê óñêîðåíèþ ðàáîòû ÎÑРèç-çà áîëüøîãî êîëè÷åñòâà ïðåðûâàíèé (ò.å. ïåðåêëþ÷åíèé çàäà÷), ïîñêîëüêó
êîíâåéåðû è êýø íå óñïåâàþò çàïîëíèòüñÿ íåîáõîäèìûìè èíñòðóêöèÿìè è äàííûìè.
Óâåëè÷åíèå ðàçìåðîâ êýøà ïðèâîäèò ê óâåëè÷åíèþ íàêëàäíûõ ðàñõîäîâ íà èõ ñèíõðîíèçàöèþ â ìíîãîïðîöåññîðíûõ ñèñòåìàõ.
 ðÿäå ñèòóàöèé ÎÑРïðèõîäèòñÿ áëîêèðîâàòü âñå êîíâåéåðû ñóïåðñêàëÿðíîãî ïðîöåññîðà, êðîìå îäíîãî. Äåëî â òîì, ÷òî èíñòðóêöèè â òàêîì ïðîöåññîðå ìîãóò çàâåðøàòüñÿ íå â òîì ïîðÿäêå, â êîòîðîì îíè ïîäàâàëèñü â ïðîöåññîð. Íàïðèìåð, ïîòîê
èíñòðóêöèé I4 ! I3 ! I2 ! I1 ! ïðîöåññîð ìîæåò áûòü ðàñïðåäåëåí ìåæäó äâóìÿ
êîíâåéåðàìè êàê I3 ! I1 ! êîíâåéåð1 , I4 ! I2 ! êîíâåéåð2 . Åñëè èíñòðóêöèÿ I1
âûïîëíÿåòñÿ î÷åíü äîëãî (íàïðèìåð, â íåé äåëàåòñÿ îáðàùåíèå ê ïàìÿòè), òî èíñòðóêöèè I2 , I4 áóäóò èñïîëíåíû ðàíüøå, ÷åì I1 , I3 . Ýòà ñèòóàöèÿ íåäîïóñòèìà ïðè ðàáîòå
ñ ââîäîì/âûâîäîì. Ïîýòîìó â ñóïåðñêàëÿðíûõ ïðîöåññîðàõ ñóùåñòâóþò èíñòðóêöèè,
ïåðåâîäÿùèå åãî â ïîñëåäîâàòåëüíûé ðåæèì èñïîëíåíèÿ èíñòðóêöèé äëÿ îáåñïå÷åíèÿ
èõ ïðàâèëüíîãî ïîðÿäêà. ×àñòî ýòè èíñòðóêöèè ôàêòè÷åñêè áëîêèðóþò âñå êîíâåéåðû,
êðîìå îäíîãî.
DR
Äîâîäû (ñòàòèñòè÷åñêèé àíàëèç), ïîëîæåííûå â îñíîâó îáîñíîâàíèÿ RISC àðõèòåêòóðû,
îêàçàëèñü íå ñîâñåì âåðíûìè äëÿ ÎÑÐÂ. ×àñòî ïðèëîæåíèå ÎÑРïðîâîäèò çíà÷èòåëüíóþ ÷àñòü âðåìåíè â îáðàáîòêå ïðåðûâàíèé îò âíåøíèõ óñòðîéñòâ. Îáðàáîò÷èêè ïðåðûâàíèé ÷àñòî ïèøóòñÿ íà àññåìáëåðå è íàëè÷èå ñëîæíûõ èíñòðóêöèé â CISC ïðîöåññîðå
ïîçâîëÿåò óìåíüøèòü äëèíó îáðàáîò÷èêà. Íàëè÷èå ñëîæíûõ ðåæèìîâ àäðåñàöèè ïàìÿòè ïîçâîëÿåò îáîéòèñü ìåíüøèì êîëè÷åñòâîì ðåãèñòðîâ è, ñîîòâåòñòâåííî, åùå óìåíüøèòü îáðàáîò÷èê (çà ñ÷åò óìåíüøåíèÿ êîëè÷åñòâà ñîõðàíÿåìûõ/âîññòàíàâëèâàåìûõ ðåãèñòðîâ).
AF
Äëÿ óñêîðåíèÿ îáðàáîòêè ïðåðûâàíèé, â íåêîòîðûõ ïðîöåññîðàõ ïðèìåíÿþòñÿ ñïåöèàëüíûå ìåðû.
Òàáëèöà ïðåðûâàíèé ìîæåò õðàíèòüñÿ âî âíóòðåííåé ïàìÿòè ïðîöåññîðà, ÷òî äåëàåò
íå íóæíîé âûáîðêó èç âíåøíåé ïàìÿòè (Intel 80960).
Ïðîöåññîð ìîæåò âêëþ÷àòü òåíåâûå ðåãèñòðû, ÷òî äåëàåò íå íóæíûì ñîõðàíåíèå êîíòåêñòà òåêóùåé çàäà÷è â ïðîñòûõ ïðîöåäóðàõ îáðàáîòêè ïðåðûâàíèé (HP-PA).
Êðèòè÷åñêèå ïðîöåäóðû îáðàáîòêè ïðåðûâàíèé ìîãóò áûòü çàáëîêèðîâàíû â êýøå èíñòðóêöèé (Motorola 68060).
Òàáëèöà ïðåðûâàíèé ìîæåò õðàíèòü ïåðâûå èíñòðóêöèè îáðàáîò÷èêà ïðåðûâàíèé, ÷òî
óìåíüøàåò ïðîñòîé êîíâåéåðà (SPARC).
65
11. Àðõèòåêòóðû ïðîöåññîðîâ
11.2. Îðãàíèçàöèÿ äàííûõ âî âíåøíåé ïàìÿòè
T
 ñèñòåìàõ ðåàëüíîãî âðåìåíè äîñòàòî÷íî ÷àñòîé ÿâëÿåòñÿ ñèòóàöèÿ, êîãäà â îäíîì VME
êðåéòå íàõîäÿòñÿ íåñêîëüêî ïëàò, ïîñòðîåííûõ íà ïðîöåññîðàõ ðàçíûõ ïðîèçâîäèòåëåé. Ýòè
ïëàòû îáû÷íî ðåøàþò îáùóþ çàäà÷ó ïî óïðàâëåíèþ ïðîìûøëåííûì îáîðóäîâàíèåì è îáìåíèâàþòñÿ ìåæäó ñîáîé äàííûìè ÷åðåç ðàçäåëÿåìóþ ïàìÿòü (ñîáñòâåííî, ýòî åäèíñòâåííûé
ñïîñîá îáìåíà, ïðåäîñòàâëÿåìûé øèíîé VME, ñì. ðàçäåë 12.1). Â ýòîé ñèòóàöèè íåîáõîäèìî
ñîãëàñîâàíèå ïðåäñòàâëåíèÿ äàííûõ â ïàìÿòè êàæäûì èç ó÷àñòâóþùèõ â îáìåíå ïðîöåññîðîâ.
11.2.1. Îðãàíèçàöèÿ öåëî÷èñëåííûõ äàííûõ
AF
Ïðè äîñòóïå ê öåëî÷èñëåííûì äàííûì îñíîâíûì âîïðîñîì ÿâëÿåòñÿ ñïîñîá íóìåðàöèè
áàéòîâ â ñëîâå.
Åñëè áû â 32-áèòíîé àðõèòåêòóðå ìèíèìàëüíûì àäðåñóåìûì ýëåìåíòîì îïåðàòèâíîé ïàìÿòè ÿâëÿëîñü áû 32-áèòíîå ñëîâî, òî âîïðîñ î íóìåðàöèè áàéòîâ â ñëîâå íå âñòàâàë áû. Â
ðåàëüíîé ñèòóàöèè, êîãäà ìèíèìàëüíûì àäðåñóåìûì ýëåìåíòîì îïåðàòèâíîé ïàìÿòè ÿâëÿåòñÿ áàéò (8-ìè áèòíîå ñëîâî), äàííûå áîëüøåãî ðàçìåðà îáðàçóþòñÿ êàê îáúåäèíåíèå ïîäðÿä
èäóùèõ áàéò. Âûáîð íóìåðàöèè áàéò â 32 áèòíîì (4 áàéòà) ñëîâå ìîæåò áûòü ïðîèçâîëüíûì, ÷òî äàåò 24 = 4! ñïîñîáà. Íà ïðàêòèêå èñïîëüçóþòñÿ òîëüêî äâà: ABCD (íàçûâàåìûé
big-endian) è DCBA (íàçûâàåìûé little-endian).
 big-endian ìîäåëè áàéòû â ñëîâå íóìåðóþòñÿ îò íàèáîëåå çíà÷èìîãî ê íàèìåíåå çíà÷èìîìó.  little-endian ìîäåëè áàéòû â ñëîâå íóìåðóþòñÿ îò íàèìåíåå çíà÷èìîãî ê íàèáîëåå çíà÷èìîìó. Ïðèìåðû big-endian ïðîöåññîðîâ: Motorola 68xxx, PowerPC (ïî óìîë÷àíèþ),
SPARC, ïðèìåð little-endian ïðîöåññîðà: Intel 80x86. Ïðîöåññîðû PowerPC, Intel 80960x,
ARM, SPARC (64-áèòíûå ìîäåëè) ìîãóò ðàáîòàòü êàê â big-endian ðåæèìå, òàê è â littleendian.
Åñëè ïðîöåññîðû, îñóùåñòâëÿþùèå îáìåí ÷åðåç ðàçäåëÿåìóþ ïàìÿòü, èñïîëüçóþò ðàçíûé
ðåæèì íóìåðàöèè áàéòîâ, òî ïîòðåáóåòñÿ ïðåîáðàçîâûâàòü âñå ïîëó÷åííûå èëè ïåðåäàííûå
äàííûå. Ïðàêòè÷åñêè âñå ñîâðåìåííûå ïðîöåññîðû èìåþò äëÿ ýòîé öåëè ñïåöèàëüíóþ èíñòðóêöèþ.
11.2.2. Îðãàíèçàöèÿ äàííûõ ñ ïëàâàþùåé òî÷êîé
DR
Âñå ñîâðåìåííûå ïðîöåññîðû ïîääåðæèâàþò ñòàíäàðò ANSI/IEEE 754-1985 â îðãàíèçàöèè
äàííûõ ñ ïëàâàþùåé òî÷êîé. Íåîáõîäèìî òîëüêî ó÷èòûâàòü, ÷òî äàííûå ñ ïëàâàþùåé òî÷êîé
ñîäåðæàò íåñêîëüêî áàéò, ïîýòîìó íà íèõ òàêæå îêàçûâàåò âëèÿíèå ñïîñîá íóìåðàöèè áàéòîâ
â ñëîâå.
floating-point single:
ðàçìåð 4 áàéòà,
çíàê s áèò 31 (1 áèò)
ïîêàçàòåëü p áèòû 23. . . 30 (8 áèò)
ìàíòèññà x áèòû 0. . . 22 (23 áèò)
0
255 )
( 1)s 2p 127 1
Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè
< p <
:x
floating-point double:
ðàçìåð 8 áàéò,
çíàê s áèò 63 (1 áèò)
ïîêàçàòåëü p áèòû 52. . . 62 (11 áèò)
ìàíòèññà x áèòû 0. . . 51 (52 áèò)
0
( 1)s 2p
Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè
66
< p <
2047 )
1
1023
:x
11.3. Ïðîöåññîðû Motorola 68xxx
ðàçìåð 16 áàéò,
çíàê
s
áèò 127 (1 áèò)
ïîêàçàòåëü
ìàíòèññà
x
p
T
floating-point quad:
(ïîääåðæèâàåòñÿ íå âñåìè ïðîöåññîðàìè)
áèòû 112. . . 126 (15 áèò)
áèòû 0. . . 111 (112 áèò)
0
( 1)s 2p
32767 )
16382
1
< p <
:x
AF
Íîðìàëèçîâàííîå çíà÷åíèå (ò.å. ïðè
11.2.3. Ïóòè ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè
Äëÿ ïîâûøåíèÿ ïðîèçâîäèòåëüíîñòè îïåðàòèâíîé ïàìÿòè ïàìÿòè ïðèìåíÿþò íåñêîëüêî
ïðèåìîâ.
Ââåäåíèå íåáîëüøîé ñòàòè÷åñêîé ïàìÿòè SRAM äëÿ áóôåðèçàöèè DRAM
ìîäóëåé: áóôåðèçîâàííûå DIMM ìîäóëè.
Ââåäåíèå êîíâåéåðà â ìîäóëè DRAM. Èñïîëüçóåòñÿ òà æå èäåÿ, ÷òî è ïðè ââåäåíèè
êîíâåéåðà â ïðîöåññîðû. Âíóòðè ìîäóëÿ ïàìÿòè íàõîäèòñÿ íåñêîëüêî îáðàáàòûâàåìûõ
îáðàùåíèé ê ïàìÿòè â ðàçíîé ñòåïåíè ãîòîâíîñòè (ôîðìèðîâàíèå àäðåñà, âûáîð áàíêà,
âûáîðêà äàííûõ, çàïèñü èõ íà âíåøíþþ øèíó è ò.ä.). Ýòî ïîçâîëÿåò ìîäóëþ ïàìÿòè
ïðèíèìàòü/âûäàâàòü äàííûå êàæäûé öèêë øèíû (ïðè óñëîâèè îïòèìàëüíîãî ôóíêöèîíèðîâàíèÿ êîíâåéåðà).  ñèëó ýòîãî òàêàÿ ïàìÿòü ïîëó÷èëà íàçâàíèå synchronous
DRAM (SDRAM). Äëÿ òàêîé ïàìÿòè â êà÷åñòâå âðåìåíè äîñòóïà ïðîèçâîäèòåëè â ðåêëàìíûõ öåëÿõ ïèøóò ìèíèìàëüíûé öèêë øèíû, ÷òî äàåò ôàíòàñòè÷åñêèå âðåìåíà
äîñòóïà ìåíåå 10ns (ò.å. ÷àñòîòà øèíû áîëåå 100MHz). Íà ñàìîì æå äåëå â ìîäóëÿõ
SDRAM èñïîëüçîâàíû îáû÷íûå ìèêðîñõåìû ïàìÿòè, âðåìÿ äîñòóïà ê êîòîðûì îêîëî
60ns.
DR
Óâåëè÷åíèå øèðèíû øèíû äàííûõ: ïåðåõîä îò SIMM (32 áèò øèíà) ê DIMM (64
èëè 128 áèò øèíà) ìîäóëÿì ïðè ïîñòðîåíèè ïîäñèñòåìû ïàìÿòè.
Ðàññëîåíèå îïåðàòèâíîé ïàìÿòè. Ïîñêîëüêó ïðîöåññîð îáìåíèâàåòñÿ ñ ïàìÿòüþ
òîëüêî áëîêàìè ðàçìåðîì ñî ñòðîêó êýøà, òî ìîæíî ðàçäåëèòü ýòîò áëîê íà N ÷àñòåé (N îáû÷íî 2, 4, 8) è ïåðåäàòü êàæäóþ èç ÷àñòåé ñâîåé ïîäñèñòåìå ïàìÿòè. Â
ðåçóëüòàòå ïîëó÷àþòñÿ N ïîäñèñòåì ïàìÿòè, ðàáîòàþùèõ ïàðàëëåëüíî. Åñëè ïðîãðàììà òðåáóåò ïîñëåäîâàòåëüíûå àäðåñà ïàìÿòè (ò.å. ñòðàòåãèÿ ïðåäâûáîðêè ñòðîêè êýøà
ñåáÿ îïðàâäûâàåò), òî ýòîò ïîäõîä ìîæåò â N ðàç óâåëè÷èòü ïðîèçâîäèòåëüíîñòü ïîäñèñòåìû ïàìÿòè.
11.3. Ïðîöåññîðû Motorola 68xxx
Ïðîöåññîðû Motorola 68xxx äëèòåëüíîå âðåìÿ äîìèíèðîâàëè íà ðûíêå ïðîìûøëåííûõ
êîìïüþòåðíûõ ñèñòåì. Ñåé÷àñ îíè îòòåñíåíû íà âòîðîå ìåñòî ïðîöåññîðàìè PowerPC.
11.3.1. Îáùèé îáçîð
Ñåìåéñòâî ïðîöåññîðîâ Motorola 68xxx (ñîêðàùåííî M68k) õàðàêòåðèçóåòñÿ ïðîñòîòîé
ðåàëèçàöèè êàê àïïàðàòíûõ, òàê è ïðîãðàììíûõ ðåøåíèé íà åãî áàçå. Ïåðâûì ïðîöåññîðîì
ñåìåéñòâà ÿâëÿëñÿ õîðîøî èçâåñòíûé M68000. Õîòÿ îí ïîÿâèëñÿ â 1979 ãîäó, îí ÿâëÿåòñÿ
ïðîöåññîðîì ñ ïîëíîé 32-áèòíîé âíóòðåííåé àðõèòåêòóðîé. Ïîäîáíî âñåì ïîñëåäóþùèì ïðîöåññîðàì, åãî ëèíåéíàÿ îðãàíèçàöèÿ ïàìÿòè è åäèíîå ñ ïàìÿòüþ ïðîñòðàíñòâî ââîäà/âûâîäà
îáëåã÷àåò àïïàðàòíûå è ïðîãðàììíûå ðàçðàáîòêè. Íàêîíåö, ñïåöèàëüíûå âûâîäû ïðîöåññîðà
67
11. Àðõèòåêòóðû ïðîöåññîðîâ
AF
T
óñòàíàâëèâàþòñÿ íà êàæäîì öèêëå øèíû äëÿ òîãî, ÷òîáû ðàçëè÷èòü ñóïåðâèçîðñêîå è ïîëüçîâàòåëüñêîå àäðåñíûå ïðîñòðàíñòâà. Åñëè ýòè âûâîäû äåêîäèðîâàòü ïðè âû÷èñëåíèè àäðåñà, òî
ñèñòåìíûå ðåñóðñû áóäóò èçîëèðîâàíû îò íåñàíêöèîíèðîâàííîãî äîñòóïà ïîëüçîâàòåëüñêèõ
ïðîãðàìì.
Ñëåäóþùèå ïîêîëåíèÿ ïðîöåññîðîâ M68k, âêëþ÷àÿ M68060, ñ ïðîãðàììíîé òî÷êè çðåíèÿ
âíîñèëè òîëüêî íîâûå ðåæèìû àäðåñàöèè ïàìÿòè è íåêîòîðûå äîïîëíèòåëüíûå èíñòðóêöèè,
è ïîýòîìó ïðîãðàììèðóþòñÿ òàê æå ëåãêî, êàê M68000. Ýâîëþöèÿ çàòðîíóëà àïïàðàòíóþ
àðõèòåêòóðó ïðîöåññîðîâ: â èõ ñîñòàâå ïîÿâèëèñü è ðàçâèâàëèñü êîíâåéåðû, êýøè, MMU,
FPU è ò.ä.
Îñíîâûâàÿñü íà àðõèòåêòóðå M68k Motorola ðàçðàáîòàëà ñåìåéñòâî êîíòðîëëåðîâ
MC683xx, êîòîðûå ðàçäåëÿþò íà 3 ãðóïïû: ãðóïïó 68000, CPU32 è CPU32+.  ýòèõ êîíòðîëëåðàõ âû÷èñëèòåëüíàÿ ìîùíîñòü M68k ñî÷åòàåòñÿ ñ èíòåãðèðîâàííûìè ïåðèôåðèéíûìè
ïðîöåññîðàìè, îáðàçóÿ âûñîêîïðîèçâîäèòåëüíûå êîíòðîëëåðû. Íàèáîëåå ñïåöèàëèçèðîâàííûå, îðèåíòèðîâàííûå íà ââîä/âûâîä êîíòðîëëåðû (68302 è 68360) âêëþ÷àþò íåïðîãðàììèðóåìûé RISC ïðîöåññîð, óïðàâëÿþùèé ïîñëåäîâàòåëüíûì êîììóíèêàöèîííûì êàíàëîì. Ýòî
äàåò âîçìîæíîñòü îäíîìó óñòðîéñòâó óïðàâëÿòü òàêèì ñëîæíûì ïîñëåäîâàòåëüíûì êàíàëîì,
êàê Ethernet èëè ISDN.
Âñå ÷ëåíû ñåìåéñòâà MC683xx èìåþò ìåæìîäóëüíóþ øèíó (intermodule bus, IMB). IMB
îáåñïå÷èâàåò îáùèé èíòåðôåéñ äëÿ âñåõ ìîäóëåé ñåìåéñòâà MC683xx, ÷òî ïîçâîëÿåò ôèðìå Motorola áûñòðî ðàçðàáàòûâàòü íîâûå óñòðîéñòâà, èñïîëüçóÿ áèáëèîòåêè ñóùåñòâóþùèõ
ìîäóëåé.
11.3.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè.
M68000 (1979, 68000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 16.67MHz, 1 MIPS):
àñèíõðîííûå ïåðåäà÷è äàííûõ (êðîìå îáëàñòè èíòåðôåéñà 6800)
16-áèòíàÿ
øèíà äàííûõ, îòñóòñòâóåò äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû
24-áèòíàÿ
øèíà àäðåñà
14 ðåæèìîâ àäðåñàöèè ïàìÿòè (âêëþ÷àÿ êîñâåííûå ðåãèñòðîâûå)
DR
16 32-áèòíûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ
äâà óðîâíÿ ïðèâèëåãèé: ïîëüçîâàòåëüñêèé è ñóïåðâèçîðñêèé
äâà óêàçàòåëÿ ñòåêà äëÿ ðàçäåëåíèÿ ïîëüçîâàòåëüñêîãî è ñóïåðâèçîðñêîãî ñòåêîâ
ôèêñèðîâàííàÿ â ïàìÿòè òàáëèöà ïðåðûâàíèé (íà÷èíàÿ ñ àäðåñà 0)
îäíà íåäåëèìàÿ èíñòðóêöèÿ TAS (Test And Set) äëÿ óñòàíîâêè ñåìàôîðîâ
M68010 (1983, 68000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 16.67MHz, 1 MIPS):
ïåðåìåùàåìàÿ òàáëèöà ïðåðûâàíèé
ïîääåðæêà ìåõàíèçìà âèðòóàëüíîé ïàìÿòè
M68020 (1984, 195000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 25MHz, 5 MIPS):
àñèíõðîííûå ïåðåäà÷è äàííûõ
68
øèíà äàííûõ, äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû (àäàïòèðóåòñÿ
ê 8-ìè, 16-òè è 32-õ áèòíûì îáìåíàì ñ âíåøíèìè óñòðîéñòâàìè)
32-áèòíàÿ
32-áèòíàÿ
øèíà àäðåñà
18 ðåæèìîâ àäðåñàöèè ïàìÿòè (âêëþ÷àÿ êîñâåííûå ÷åðåç ïàìÿòü)
256-áàéò
êýø èíñòðóêöèé
11.3. Ïðîöåññîðû Motorola 68xxx
êîíâåéåð, ÷òî ïîçâîëÿåò îäíîâðåìåííî îáðàáàòûâàòü äî òðåõ
ñëîâ îäíîé îïåðàöèè èëè òðè ïîñëåäîâàòåëüíûå èíñòðóêöèè
3-õ ñòàäèéíûé
T
èíòåðôåéñ ñîïðîöåññîðà, ÷òî ïîçâîëÿåò ïîäêëþ÷èòü âíåøíåå FPU (MC68881
èëè MC68882) è MMU (MC68851)
äîïîëíèòåëüíûé óêàçàòåëü ñòåêà äëÿ ðàçäåëåíèÿ àïïàðàòíûõ è ïðîãðàììíûõ
ïðåðûâàíèé
äâå äîïîëíèòåëüíûõ íåäåëèìûõ èíñòðóêöèè: CAS è CAS2 (Compare And Swap
32 èëè 64 áèòà) äëÿ óñòàíîâêè ñåìàôîðîâ
íîâûå èíñòðóêöèè äëÿ ðàáîòû ñ áèòîâûìè ïîëÿìè
AF
M68030 (1986, 300000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà: 50MHz, 8 MIPS):
Ãàðâàðäñêàÿ àðõèòåêòóðà
äâà ðàçëè÷íûõ êýøà:
256-áàéò
êýø èíñòðóêöèé +
256-áàéò
êýø äàííûõ
àñèíõðîííûå ïåðåäà÷è äàííûõ
ñèíõðîííûé èíòåðôåéñ, ÷òî ïîçâîëÿåò îñóùåñòâëÿòü áëî÷íûå (burst) ïåðåäà÷è
â/èç êýøà
MMU, ïîçâîëÿþùåå ðàáîòàòü ñî ñòðàíèöàìè ðàçìåðîì îò 256 áàéò äî 256 êèëîáàéò
M68040 (1989, 1200000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà øèíû: 40MHz, 8 MIPS, 3.5Mflops):
ñèíõðîííûå ïåðåäà÷è äàííûõ
îòñóòñòâóåò äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû
÷àñòîòà ïðîöåññîðà ðàâíà óäâîåííîé ÷àñòîòå øèíû (ìàêñèìàëüíî 80MHz)
6-òè ñòàäèéíûé
FPU
4-êèëîáàéò
êîíâåéåð
êýø èíñòðóêöèé +
4-êèëîáàéò
êýø äàííûõ
ìåõàíèçì ñèíõðîíèçàöèè øèíû (bus snooping) (àðáèòðàæ øèíû äîëæåí áûòü
âíåøíèì, ïðîöåññîð èìååò âûâîä çàïðîñà øèíû), ýòî îáåñïå÷èâàåò ñîãëàñîâàíèå
êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ
DR
M68060 (1994, 2500000 òðàíçèñòîðîâ, ìàêñ. ÷àñòîòà øèíû: 66MHz, 100 MIPS):
ñóïåðêîíâåéåðíûé, ñóïåðñêàëÿðíûé 32 áèòíûé ãèáðèäíûé CISC-RISC ïðîöåññîð
íàáîð èíñòðóêöèé M68040 ðåàëèçîâàí àïïàðàòíîé ëîãèêîé, à íå ìèêðîêîäîì
îñíîâíûå óñòðîéñòâà: áóôåð èíñòðóêöèé, 4-õ ñòàäèéíîå êîíâåéåðíîå óñòðîéñòâî ïðåäâûáîðêè, äâà 4-õ ñòàäèéíûõ êîíâåéåðíûõ öåëî÷èñëåííûõ óñòðîéñòâà,
óñòðîéñòâî ïåðåõîäîâ, FPU ïîâûøåííîé òî÷íîñòè
êýø ïåðåõîäîâ (BTC)
ïîòîê èíñòðóêöèé ðàçäåëÿåòñÿ íà äâà êîíâåéåðà íà FIFO ñòàäèè
óñòðîéñòâî ïðåäâûáîðêè ïðåîáðàçóåò âõîäíîé ïîòîê M680x0 èíñòðóêöèé, èìåþùèõ ïåðåìåííóþ äëèíó, â ïîòîê RISC èíñòðóêöèé ôèêñèðîâàííîé äëèíû
M68060 ìîæåò ìîæåò èñïîëíÿòü çà îäèí öèêë 4 èíñòðóêöèè M680x0: äâå öåëî÷èñëåííûõ èíñòðóêöèè, îäíó èíñòðóêöèþ ïåðåõîäà è îäíó èíñòðóêöèþ ñ ïëàâàþùåé òî÷êîé; ýòîò ïàðàëëåëèçì îáåñïå÷èâàåò âûñîêóþ ñêîðîñòü èñïîëíåíèÿ
äàæå äëÿ êîäà, íå ïåðåêîìïèëèðîâàííîãî ñïåöèàëüíî äëÿ M68060
4-êèëîáàéò
êýø èíñòðóêöèé +
4-êèëîáàéò
êýø äàííûõ
àâòîìàòè÷åñêîå óìåíüøåíèå ïîòðåáëÿåìîé ìîùíîñòè: âíóòðåííèå ôóíêöèîíàëüíûå áëîêè àâòîìàòè÷åñêè âûêëþ÷àþòñÿ, åñëè îíè íå èñïîëüçóþòñÿ â òå÷åíèè ðÿäà öèêëîâ
69
11. Àðõèòåêòóðû ïðîöåññîðîâ
T
M68302 (ìèêðîêîíòðîëëåð ãðóïïû 68000):
IMP (Integrated Multiprotocol Processor)
M68302 ñîñòîèò èç ïðîöåññîðà M68000, System Integration Block (SIB) è Communication Processor (CP)
SIB ñîäåðæèò êîíòðîëëåð DMA, äâà 16-áèòíûõ òàéìåðà îáùåãî íàçíà÷åíèÿ,
êîíòðîëëåð ïàìÿòè è êîíòðîëëåð ïðåðûâàíèé
CP ÿâëÿåòñÿ âûäåëåííûì RISC ïðîöåññîðîì, îáñëóæèâàþùèì 6 ïîñëåäîâàòåëüíûõ ïîðòîâ, è îòâå÷àåò çà ðàáîòó ñ ïîñëåäîâàòåëüíûìè êàíàëàìè ïî âûáðàííîìó ïîëüçîâàòåëåì ïðîòîêîëó (ISDN, UART, HDLC, BSC è äðóãèå)
AF
M68360 (èëè QUICC) (ìèêðîêîíòðîëëåð ãðóïïû CPU32+):
M68360 ñîñòîèò èç ïðîöåññîðà CPU32+, SIM60 (System Integration Module) è
CPM (Communication Processor Module)
ïðîöåññîð CPU32+ ÿâëÿåòñÿ ïðîöåññîðîì M68020 áåç êýøà è ñîïðîöåññîðíîãî
èíòåðôåéñà; ñèñòåìà êîìàíä ïðîöåññîðà M68020 ðàñøèðåíà CPU32+ ñïåöèôè÷åñêèìè èíñòðóêöèÿìè òàáëè÷íîé èíòåðïîëÿöèè
SIM60 èíòåãðèðóåò îñíîâíûå óñòðîéñòâà îáùåãî íàçíà÷åíèÿ, êîòîðûå ìîãóò
áûòü ïîëåçíû â ëþáûõ 32-áèòíûõ ïðîöåññîðíûõ ñèñòåìàõ: ñèíòåçàòîð ÷àñòîòû,
òàéìåðû-áóäèëüíèêè, òàéìåð ïåðèîäè÷åñêîãî ïðåðûâàíèÿ, êîíòðîëëåð ïàìÿòè,
ñïîñîáíûé áåç äîïîëíèòåëüíîé ëîãèêè óïðàâëÿòü 32-áèòíûìè DRAM
CPM ñîäåðæèò 2 DMA êîíòðîëëåðà, 4 òàéìåðà îáùåãî íàçíà÷åíèÿ, êîíòðîëëåð
ïðåðûâàíèé, 7 êîììóíèêàöèîííûõ êîíòðîëëåðîâ, óïðàâëÿþùèõ 7-þ ïîñëåäîâàòåëüíûìè ôèçè÷åñêèìè êàíàëàìè
ïîääåðæèâàþòñÿ ïðîòîêîëû UART, ISDN, HDLC, BSC, AppleTalk
ïðîòîêîë Ethernet ïîääåðæèâàåòñÿ â âåðñèè MC68EN360
11.3.3. Ïðîãðàììíàÿ ìîäåëü
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû 16 ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ è íåñêîëüêî ñëóæåáíûõ
ðåãèñòðîâ.
DR
Ðåãèñòðû d0 d7 (ðåãèñòðû äàííûõ):
Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ
1. Áèò (M68020 è âûøå, òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè)
2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó,
ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå
3. Áàéò (8 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ
4. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ
5. Äëèííîå ñëîâî (32 áèò)
6. Ñ÷åòâåðåííîå ñëîâî (64 áèò); èñïîëüçóþòñÿ ëþáûå äâà ðåãèñòðà, íàä òàêèìè
îïåðàíäàìè îïðåäåëåíà òîëüêî èíñòðóêöèÿ ïåðåñûëêè (MOVEM).
Ðåãèñòðû a0 a7 (ðåãèñòðû äàííûõ):
Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ
1. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü çàïîëíÿåòñÿ çíàêîâûì
áèòîì èñòî÷íèêà
2. Äëèííîå ñëîâî (32 áèò)
70
11.4. Ïðîöåññîðû Intel 80x86
T
Ðåãèñòð pc (program counter):
ñîäåðæèò àäðåñ ñëåäóþùåé èíñòðóêöèè. Ïðè çàïèñè â ýòîò ðåãèñòð ïðîèñõîäèò ïåðåõîä ïî àäðåñó, êîòîðûé áûë çàïèñàí.
Ðåãèñòð êîäà óñëîâèÿ ccr (condition code register):
ÿâëÿåòñÿ ÷àñòüþ ðåãèñòðà ñòàòóñà (status register, SR), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó
àðèôìåòè÷åñêèõ îïåðàöèé èëè ñïåöèàëüíûìè èíñòðóêöèÿìè, è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà.
Ïîääåðæèâàþòñÿ ñëåäóþùèå ðåæèìû àäðåñàöèè ïàìÿòè (â òåðìèíàõ ÿçûêà C).
ãäå
(An + +)
( An )
(Bn + d + Xn )
((Bn + d) + Xn + o)
((Bn + d + Xn ) + o)
AF
An àäðåñíûé ðåãèñòð a0 a7
Bn àäðåñíûé ðåãèñòð a0 a7 èëè pc
Xn îòñóòñòâóåò èëè ðåãèñòð a0 a7 èëè d0 d7; ó M68020 è âûøå ìîæåò áûòü Xn s,
s = 1; 2; 4; 8
d êîíñòàíòà ñî çíàêîì (8, 16, 32 áèò), âêëþ÷àÿ 0
o êîíñòàíòà ñî çíàêîì (16, 32 áèò), âêëþ÷àÿ 0
DR
Èíñòðóêöèè ïðîöåññîðîâ Motorola 68xxx èìåþò îò íóëÿ äî òðåõ îïåðàíäîâ. Áîëüøèíñòâî
èíñòðóêöèé (ïåðåñûëêè, àðèôìåòè÷åñêèå, ëîãè÷åñêèå) èìåþò äâà îïåðàíäà, îäèí èç êîòîðûõ
íå èçìåíÿåòñÿ â îïåðàöèè (èñòî÷íèê), à äðóãîé ÿâëÿåòñÿ ðåçóëüòàòîì îïåðàöèè (ïðèåìíèê).
Îáû÷íî èñïîëüçóåòñÿ ñèíòàêñèñ, â êîòîðîì èñòî÷íèê ÿâëÿåòñÿ ëåâûì îïåðàíäîì, à ïðèåìíèê
- ïðàâûì.
Ñóùåñòâóåò íåñêîëüêî èíñòðóêöèé, íåÿâíî èñïîëüçóþùèõ óêàçàòåëü ñòåêà a7. Ýòî ñòåêîâûå îïåðàöèè è âûçîâû ôóíêöèé.
11.4. Ïðîöåññîðû Intel 80x86
Ïðîöåññîðû Intel 80x86 äîìèíèðóþò íà ðûíêå ïåðñîíàëüíûõ êîìïüþòåðîâ. Íà ðûíêå ïðîìûøëåííûõ ñèñòåì èõ ðîëü íåçíà÷èòåëüíà.
11.4.1. Îáùèé îáçîð
Ïåðâûé ïðåäñòàâèòåëü ñåìåéñòâà - i8086, ïîÿâèëñÿ â 1979ã. Ýòî áûë 16-òè áèòíûé ïðîöåññîð, îáåñïå÷èâàþùèé ñîâìåñòèìîñòü ñ ïðåäûäóùèìè 8-ìè áèòíûìè ïðîöåññîðàìè i8080 è
i8085. Ýòî íàëîæèëî îïðåäåëåííûé îòïå÷àòîê íà ïðîãðàììíóþ àðõèòåêòóðó i8086:
óñòàðåâøèé íàáîð èíñòðóêöèé,
ìíîæåñòâî íåëîãè÷íûõ îãðàíè÷åíèé íà îïåðàíäû.
Îñíîâíûå îáùèå ÷åðòû ñåìåéñòâà i80x86
ïðîñòðàíñòâî ââîäà/âûâîäà îòäåëåíî îò ïðîñòðàíñòâà ïàìÿòè,
71
11. Àðõèòåêòóðû ïðîöåññîðîâ
ñåãìåíòíàÿ îðãàíèçàöèÿ ïàìÿòè,
ìàëîå ÷èñëî ðåãèñòðîâ,
T
íåâçàèìîçàìåíÿåìîñòü ðåãèñòðîâ (ìíîãî èíñòðóêöèé, íåÿâíî èñïîëüçóþùèõ æåñòêî çàêðåïëåííûå ðåãèñòðû).
Ïðîöåññîð i80386 áûë ïåðâûì 32-õ áèòíûì ïðîöåññîðîì â ñåìåéñòâå è óæå ìîã ðàáîòàòü ñ
ïëîñêîé ìîäåëüþ ïàìÿòè. Îäíàêî, ýòîò ïðîöåññîð ñîõðàíèë ïðîãðàììíóþ ñîâìåñòèìîñòü ñ
ïðåäûäóùèìè ÷ëåíàìè ñåìåéñòâà. Ýòî åùå áîëüøå óâåëè÷èëî åãî ñëîæíîñòü è çàêîíñåðâèðîâàëî óñòàðåâøóþ ïðîãðàììíóþ àðõèòåêòóðó i8086.
AF
11.4.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè.
i80386 (1987, 275000 òðàíçèñòîðîâ, 33MHz, 8 MIPS):
32-áèò øèíà äàííûõ è 32-áèò øèíà àäðåñà
8 32-áèòíûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ
äèíàìè÷åñêîå èçìåíåíèå øèðèíû øèíû (16 èëè 32 áèò)
ïðîñòðàíñòâî ïàìÿòè îòäåëåíî îò 64Êá ïðîñòðàíñòâà ââîäà/âûâîäà
áóôåð ïðåäâûáîðêè 16 áàéò
MMU (ñòðàíè÷íîå èëè(è) ñåãìåíòíîå) ñ êýøåì ðåçóëüòàòîâ òðàíñëÿöèè; ìîæåò
ðàáîòàòü â 3-õ ðåæèìàõ:
real mode
: 24 áèò ñåãìåíòíûé àäðåñ, íåò òðàíñëÿöèè
protected mode : 32 áèò àäðåñ, ñòðàíè÷íîå èëè(è) ñåãìåíòíîå ïðåîáðàçîâàíèå
: 24 áèò ñåãìåíòíûé àäðåñ, ñòðàíè÷íàÿ òðàíñëÿöèÿ
âíåøíåå FPU i80387
âíåøíèé êîíòðîëëåð (âíåøíåé) êýø ïàìÿòè i82385
ïîääåðæêà ìíîãîçàäà÷íîñòè ïîñðåäñòâîì ðåãèñòðà çàäà÷è è äåñêðèïòîðîâ çàäà÷
DR
virtual 8086 mode
i80486 (1989, 1200000 òðàíçèñòîðîâ, ÷àñòîòà øèíû 33MHz, 20 MIPS):
âíóòðåííÿÿ ÷àñòîòà ïðîöåññîðà ðàâíà ëèáî ÷àñòîòå øèíû (DX 33MHz), ëèáî
óäâîåííîé ÷àñòîòå øèíû (DX2 66MHz), ëèáî óòðîåííîé ÷àñòîòå øèíû (DX4
100MHz)
åäèíûé 8Êá (16Êá) êýø èíñòðóêöèé è äàííûõ (ñ ïîääåðæêîé áëîêîâûõ ïåðåäà÷
(burst access))
êýø ñêâîçíîé çàïèñè (write through)/ îáðàòíîé çàïèñè (write back)
ìåõàíèçì ñèíõðîíèçàöèè êýøåé â ìíîãîïðîöåññîðíûõ ñèñòåìàõ (bus snooping)
32 áàéò áóôåð ïðåäâûáîðêè
âñòðîåííîå FPU (áåç êîíâåéåðà)
5-òè ñòàäèéíûé êîíâåéåð, èñïîëüçóþùèé òàáëèöó ðåãèñòðîâ (register scoreboard)
Pentium (1993, 3100000 òðàíçèñòîðîâ, ÷àñòîòà øèíû 50/60/66MHz, 100 specint92, 80 specfp92):
âíóòðåííÿÿ ÷àñòîòà ïðîöåññîðà ðàâíà ëèáî ÷àñòîòå øèíû (60/66MHz), ëèáî
1.5 ÷àñòîòû øèíû (75/90/100MHz), óäâîåííîé ÷àñòîòå øèíû (120/133MHz), 2.5
÷àñòîòû øèíû (150/166MHz), ëèáî óòðîåííîé ÷àñòîòå øèíû (180/200MHz)
72
64-áèò âíåøíÿÿ øèíà äàííûõ, íî 32-áèòíàÿ âíóòðåííÿÿ àðõèòåêòóðà
ñóïåðñêàëÿðíàÿ àðõèòåêòóðà: 2 IU
11.4. Ïðîöåññîðû Intel 80x86
àïïàðàòíîå äåêîäèðîâàíèå
óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ (BU)
T
5-òè ñòàäèéíûé êîíâåéåð â IU, 8-ìè ñòàäèéíûé êîíâåéåð â FPU
Ãàðâàðäñêàÿ àðõèòåêòóðà: 8Êá êýø èíñòðóêöèé è 8Êá êýø äàííûõ
ìåõàíèçì ñèíõðîíèçàöèè êýøåé MESI (Modified, Exclusive, Shared, Invalid), èñïîëüçóåìûé â PowerPC
ãèáðèäíàÿ CISC/RISC àðõèòåêòóðà
Pentium Pro (1996, 5500000 òðàíçèñòîðîâ, 150+MHz, 366 specint92, 283 specfp92):
ñóïåðñêàëÿðíûé ïðîöåññîð: äî 5 èíñòðóêöèé çà öèêë
14-òè ñòàäèéíûå êîíâåéåðû (2 äëÿ IU è 1 äëÿ FPU)
AF
Ãàðâàðäñêàÿ àðõèòåêòóðà: 16Êá êýø èíñòðóêöèé è 8Êá êýø äàííûõ
àðõèòåêòóðà DIB (Dual Independent Bus): îäíà øèíà ñâÿçûâàåò ïðîöåññîð ñ êýø
ïàìÿòüþ âòîðîãî óðîâíÿ, à âòîðàÿ - ñ ÎÇÓ
256(512)Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå, íî â òîì æå êîðïóñå, ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé
íà ÷àñòîòå ïðîöåññîðà
èñïîëíåíèå èíñòðóêöèé íå ïî ïîðÿäêó
ñïåêóëÿòèâíîå èñïîëíåíèå: âûïîëíåíèå èíñòðóêöèé çà òî÷êîé âåòâëåíèÿ
ïåðåèìåíîâàíèå ðåãèñòðîâ (register renaming)
Pentium-II (1997, 7500000 òðàíçèñòîðîâ, 233+MHz):
Pentium Pro ÿäðî ñ àðõèòåêòóðîé DIB
ñóïåðñêàëÿðíûé ïðîöåññîð: 2IU è 2FPU
Ãàðâàðäñêàÿ àðõèòåêòóðà: 16Êá êýø èíñòðóêöèé è 16Êá êýø äàííûõ
512Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå,
ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé íà ïîëîâèíå ÷àñòîòû ïðîöåññîðà (äëÿ ìîäèôèêàöèè Pentium-III Xeon íà ÷àñòîòå ïðîöåññîðà)
DR
Pentium-III (1999, 450+MHz):
Pentium II ñ äîïîëíèòåëüíûìè ìóëüòèìåäèéíûìè èíñòðóêöèÿìè
512Êá âñòðîåííûé êýø âòîðîãî óðîâíÿ; ðàñïîëîæåí íà îòäåëüíîì êðèñòàëëå,
ñâÿçàí ñ ïðîöåññîðîì 64-áèòíîé øèíîé, ðàáîòàþùåé íà ïîëîâèíå ÷àñòîòû ïðîöåññîðà (äëÿ ìîäèôèêàöèè Pentium-III Xeon íà ÷àñòîòå ïðîöåññîðà)
P7 (Intel è HP, 2000):
64-áèò àðõèòåêòóðà
RISC ïðîöåññîð ñ íàáîðîì êîìàíä PA-RISC, ñïîñîáåí âûïîëíÿòü èíñòðóêöèè
i8086
11.4.3. Ïðîãðàììíàÿ ìîäåëü
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû 8 ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ è íåñêîëüêî ñëóæåáíûõ
ðåãèñòðîâ.
Ðåãèñòðû eax, ebx, ecx, edx:
Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ
1. Áèò (òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè)
2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó,
ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå
73
11. Àðõèòåêòóðû ïðîöåññîðîâ
T
3. Áàéò (8 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; âîçìîæåí äîñòóï ê áèòàì 0. . . 7 è áèòàì 8. . . 15 ñîîòâåòñòâåííî ïî èìåíàì
al, bl, cl, dl è ah, bh, ch, dh
4. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; îáðàùåíèå îñóùåñòâëÿåòñÿ ïî èìåíè ax, bx, cx, dx ñîîòâåòñòâåííî
5. Äëèííîå ñëîâî (32 áèò)
Ðåãèñòðû esi, edi, ebp, esp:
Ìîãóò ñîäåðæàòü öåëî÷èñëåííûå äàííûå ñëåäóþùèõ òèïîâ
1. Áèò (òîëüêî èíñòðóêöèè, ðàáîòàþùèå ñ áèòîâûìè ïîëÿìè)
AF
2. Äâîè÷íî-çàêîäèðîâàííûå äåñÿòè÷íûå ÷èñëà (BCD); áàéò ñîäåðæèò îäíó öèôðó,
ñóùåñòâóþò èíñòðóêöèè, ðàáîòàþùèå ñ äâóìÿ öèôðàìè â îäíîì áàéòå
3. Ñëîâî (16 áèò); ïðè çàïèñè â ðåãèñòð ñòàðøàÿ ÷àñòü íå èñïîëüçóåòñÿ è íå èçìåíÿåòñÿ; îáðàùåíèå îñóùåñòâëÿåòñÿ ïî èìåíè si, di, bp, sp ñîîòâåòñòâåííî
4. Äëèííîå ñëîâî (32 áèò)
Ðåãèñòð êîäà óñëîâèÿ ccr (condition code register):
ÿâëÿåòñÿ ÷àñòüþ ðåãèñòðà ôëàãîâ (EFLAGS), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ
óñëîâíîãî ïåðåõîäà.
Ñëåäóþùèå ðåãèñòðû äîñòóïíû ïîëüçîâàòåëüñêîé ïðîãðàììå, íî íå èñïîëüçóþòñÿ â ïðèêëàäíûõ ïðîãðàììàõ äëÿ UNIX ñèñòåì (ïîñêîëüêó îíè ðàáîòàþò â ïëîñêîé ìîäåëè ïàìÿòè):
Ñåãìåíòíûå ðåãèñòðû gs, fs, es, ds, cs, ss:
ñîäåðæàò 16-áèò ñåëåêòîðû ñåãìåíòîâ, íåÿâíî ó÷àñòâóþò ïðè ôîðìèðîâàíèè àäðåñà
Âñå ðåæèìû àäðåñàöèè ïàìÿòè ïðîöåññîðîâ Intel 80x86 ìîæíî çàïèñàòü îäíîé ôîðìóëîé:
àäðåñ ÿ÷åéêè ïàìÿòè åñòü
DR
base + index scale + displacement
ãäå
base áàçîâûé ðåãèñòð: eax, ebx, ecx, edx, esi, edi, ebp, esp
index èíäåêñíûé ðåãèñòð: eax, ebx, ecx, edx, esi, edi, ebp
scale öåëàÿ êîíñòàíòà 1, 2, 4, 8
displacement ñìåùåíèå 8 èëè 32 áèò
Ëþáîé èç ýëåìåíòîâ àäðåñà ìîæåò îòñóòñòâîâàòü (ñ îäíèì èñêëþ÷åíèåì: åñëè îòñóòñòâóåò
index, òî äîëæåí îòñóòñòâîâàòü è scale).
Èíñòðóêöèè ïðîöåññîðîâ Intel 80x86 èìåþò îò íóëÿ äî òðåõ îïåðàíäîâ (ÿâíûõ èëè íåÿâíûõ). Áîëüøèíñòâî èíñòðóêöèé (ïåðåñûëêè, àðèôìåòè÷åñêèå, ëîãè÷åñêèå) èìåþò äâà îïåðàíäà, îäèí èç êîòîðûõ íå èçìåíÿåòñÿ â îïåðàöèè (èñòî÷íèê), à äðóãîé ÿâëÿåòñÿ ðåçóëüòàòîì
îïåðàöèè (ïðèåìíèê). Ôèðìà Intel èñïîëüçóåò ñèíòàêñèñ, â êîòîðîì ïðèåìíèê ÿâëÿåòñÿ ëåâûì
îïåðàíäîì, à èñòî÷íèê - ïðàâûì. Íî áîëüøèíñòâî àññåìáëåðîâ â UNIX ñèñòåìàõ èñïîëüçóåò
ñèíòàêñèñ a la Motorola 68xxx: ëåâûé îïåðàíä - èñòî÷íèê, ïðàâûé - ïðèåìíèê.
Ó áîëüøèíñòâà äâóõîïåðàíäíûõ èíñòðóêöèé îäèí èç îïåðàíäîâ (èñòî÷íèê èëè ïðèåìíèê) ìîæåò áûòü ðåãèñòðîì èëè ÿ÷åéêîé ïàìÿòè, äðóãîé òîãäà ìîæåò áûòü ðåãèñòðîì èëè
íåïîñðåäñòâåííûì çíà÷åíèåì. Ýòî ïîçâîëÿåò ðàçäåëèòü äâóõîïåðàíäíûå èíñòðóêöèè íà ñëåäóþùèå ãðóïïû:
74
11.5. Ïðîöåññîðû PowerPC
ðåãèñòð - ðåãèñòð
ðåãèñòð - ïàìÿòü
ïàìÿòü - ðåãèñòð
íåïîñðåäñòâåííîå çíà÷åíèå - ðåãèñòð
íåïîñðåäñòâåííîå çíà÷åíèå - ïàìÿòü
T
Ñóùåñòâóþò èíñòðóêöèè, (íåÿâíî) îñóùåñòâëÿþùèå îïåðàöèè òèïà "ïàìÿòü - ïàìÿòü". Ýòî
ñòðîêîâûå èíñòðóêöèè è îïåðàöèè ñî ñòåêîì.
Èíñòðóêöèè, íåÿâíî èñïîëüçóþùèå æåñòêî çàêðåïëåííûå ðåãèñòðû:
óìíîæåíèå è äåëåíèå ñ äâîéíîé òî÷íîñòüþ
ââîä/âûâîä
AF
ðàáîòà ñî ñòðîêàìè
öèêëû
ñäâèãè
îïåðàöèè ñî ñòåêîì (âêëþ÷àÿ âûçîâû ôóíêöèé)
èíñòðóêöèÿ òðàíñëÿöèè
 32-áèòíîì ðåæèìå ðàáîòû ïðîöåññîðà áîëüøèíñòâî èíñòðóêöèé èìåþò îïåðàíäû ðàçìåðîì 8 èëè 32 áèò; èñïîëüçîâàòü îïåðàíäû ðàçìåðîì 16 áèò ìîæíî ïðè èñïîëüçîâàíèè
ñïåöèàëüíîãî ïðåôèêñà èíñòðóêöèè. Îäíàêî, èçìåíèòü ðàçìåð ñìåùåíèÿ â àäðåñå (8 èëè 32
áèò) òàêèì ñïîñîáîì íåâîçìîæíî.
11.5. Ïðîöåññîðû PowerPC
DR
Àðõèòåêòóðà PowerPC (Performance Optimized With Enhanced Risc Personal Computer)
áûëà ðàçðàáîòàíà ñîâìåñòíî IBM, Motorola è Apple. Â íàñòîÿùåå âðåìÿ îíà äîìèíèðóåò íà
ðûíêå ïðîìûøëåííûõ ñèñòåì.
11.5.1. Îáùèé îáçîð
Àðõèòåêòóðà PowerPC îïðåäåëÿåò òðè àðõèòåêòóðíûõ óðîâíÿ:
UISA (User Instruction Set Architecture) îïðåäåëÿåò óðîâåíü àðõèòåêòóðû, êîòîðîìó
äîëæíî óäîâëåòâîðÿòü ïîëüçîâàòåëüñêîå ïðîãðàììíîå îáåñïå÷åíèå. UISA çàäàåò ïðîãðàììíóþ ìîäåëü è ìîäåëü ïàìÿòè äëÿ ïîëüçîâàòåëüñêèõ ïðîãðàìì. Èìåííî, UISA
îïðåäåëÿåò äîñòóïíûé ïðèêëàäíîé ïðîãðàììå íàáîð èíñòðóêöèé, íàáîð ðåãèñòðîâ, òèïû äàííûõ, ñîãëàøåíèÿ î õðàíåíèè ÷èñåë ñ ïëàâàþùåé òî÷êîé â ïàìÿòè, ìîäåëü èñêëþ÷åíèé, âèäèìóþ ïðèêëàäíîé ïðîãðàììîé.
VEA
OEA
(Virtual Environment Architecture) îïðåäåëÿåò äîïîëíèòåëüíûé óðîâåíü àðõèòåêòóðû, êîòîðîìó äîëæíî óäîâëåòâîðÿòü ïîëüçîâàòåëüñêîå ïðîãðàììíîå îáåñïå÷åíèå, âûõîäÿùåå çà ðàìêè îáû÷íûõ òðåáîâàíèé ïðèêëàäíûõ ïðîãðàìì. VEA çàäàåò ìîäåëü ïàìÿòè äëÿ îêðóæåíèé, â êîòîðûõ ìíîæåñòâî óñòðîéñòâ ìîãóò ïîëó÷àòü äîñòóï ê ïàìÿòè,
îïðåäåëÿåò ìîäåëü êýøà è èíñòðóêöèè óïðàâëåíèÿ êýøåì.
(Operating Environment Architecture) îïðåäåëÿåò óðîâåíü àðõèòåêòóðû, êîòîðîìó
äîëæíî óäîâëåòâîðÿòü ñóïåðâèçîðñêîå ïðîãðàììíîå îáåñïå÷åíèå (îïåðàöèîííûå ñèñòåìû). OEA îïðåäåëÿåò ìîäåëü óïðàâëåíèÿ ïàìÿòüþ, ðåãèñòðû óðîâíÿ ñóïåðïîëüçîâàòåëÿ, òðåáîâàíèÿ ê ñèíõðîíèçàöèè ïðîöåññîâ, ìîäåëü èñêëþ÷åíèé.
75
11. Àðõèòåêòóðû ïðîöåññîðîâ
AF
T
Ýòè ñïåöèôèêàöèè ïîçâîëÿþò ðàçðàáàòûâàòü íîâûå ïðîöåññîðû ñåìåéñòâà, ñîõðàíÿÿ ïðîãðàììíóþ ñîâìåñòèìîñòü ñ ñóùåñòâóþùèìè è áóäóùèìè ïðîöåññîðàìè PowerPC. Âïåðâûå â
èñòîðèè ðàçðàáîòêè ïðîöåññîðîâ âàæíåéøèå óñèëèÿ ïî ñïåöèôèêàöèè áûëè ïðåäïðèíÿòû äî
ïîÿâëåíèÿ ïåðâîãî ïðîöåññîðà.
 äîïîëíåíèå ê ýòèì àðõèòåêòóðíûì îïðåäåëåíèÿì òðè ïðîèçâîäèòåëÿ (IBM, Motorola,
Apple) ðàçðàáîòàëè ýòàëîííóþ ïëàòôîðìó äëÿ ðàçðàáîòêè ïëàò íà îñíîâå PowerPC. CHRP
(Common Hardware Reference Platform) ÿâëÿåòñÿ îòêðûòîé ñïåöèôèêàöèåé äëÿ ðàçðàáîòêè
êîìïüþòåðíûõ ñèñòåì íà îñíîâå PowerPC. Îòìåòèì äâà âàæíåéøèõ àñïåêòà ýòîé ñïåöèôèêàöèè. Âî-ïåðâûõ, ñïåöèôèêàöèÿ îïèñûâàåò óñòðîéñòâà, èíòåðôåéñû è ôîðìàòû äàííûõ,
òðåáóåìûå äëÿ ðàçðàáîòêè è ïîñòðîåíèÿ çàêîí÷åííîé êîìïüþòåðíîé ñèñòåìû. Îíà îïèñûâàåò
ìåòîäû àáñòðàãèðîâàíèÿ àïïàðàòíûõ äåòàëåé îò îïåðàöèîííîé ñèñòåìû. Áîëåå òîãî, CHRP
ïðåäïèñûâàåò èñïîëüçîâàòü âòîðóþ PCI øèíó, òàê, ÷òî øèíà PowerPC ðàçäåëÿåòñÿ òîëüêî
L2 êýøåì, êîíòðîëëåðîì ïàìÿòè è ìîñòîì PCI. Ýòî ïîçâîëÿåò ðàçðàáîò÷èêàì èñïîëüçîâàòü
íîâûå ïðîöåññîðû PowerPC áåç èçìåíåíèé â îñòàëüíîé ÷àñòè ïëàòû. Âî-âòîðûõ, ñïåöèôèêàöèÿ îïèñûâàåò ýòàëîííóþ ðåàëèçàöèþ îïåðàöèîííîé ñèñòåìû, ñîãëàñîâàííóþ ñ èçâåñòíûìè
îïåðàöèîííûìè ñèñòåìàìè äëÿ PowerPC: AIX (IBM), Solaris (Sun), Windows NT (Microsoft).
11.5.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
Âñå ïåðå÷èñëåííûå íèæå ïðîöåññîðû óäîâëåòâîðÿþò ñòàíäàðòó íà PowerPC è îòëè÷àþòñÿ
íàáîðîì àïïàðàòíûõ óñòðîéñòâ.
PowerPC 603 (1993, 1600000 òðàíçèñòîðîâ):
8Êá êýø èíñòðóêöèé + 8Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
FPU êîíâåéåðèçèðîâàíî, òàê, ÷òî èíñòðóêöèè ñëîæåíèÿ è óìíîæåíèÿ îäèíàðíîé òî÷íîñòè ìîãóò îáðàáàòûâàòüñÿ êàæäûé öèêë
4-õ ñòàäèéíûé êîíâåéåð
MMU, âûïîëíÿþùåå ñåãìåíòíóþ è ñòðàíè÷íóþ òðàíñëÿöèþ àäðåñà èç 52áèòíîãî ëîãè÷åñêîãî àäðåñà â 32-áèòíûé ôèçè÷åñêèé àäðåñ
äâà 64-âõîäîâûõ TLB
DR
5 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 1 IU + 1 FPU + 1 BU + 1 load/store
unit + 1 system register unit
ïîòðåáëåíèå 3Âò íà ÷àñòîòå 80MHz, ÷åòûðå ïðîãðàììíî êîíòðîëèðóåìûõ ðåæèìà ýêîíîìèè ýíåðãèè
PowerPC 603e (1993, 1600000 òðàíçèñòîðîâ):
Âàðèàíò PowerPC 603 äëÿ íàñòîëüíûõ ñèñòåì, ÷àñòîòà äî 240MHz
PowerPC 604 (1994, 3600000 òðàíçèñòîðîâ):
ñóïåðñêàëÿðíûé ïðîöåññîð (4 èíñòðóêöèè çà öèêë)
76
16Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
6 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 3 IU + 1 FPU + 1 BU + 1 load/store
unit
6-òè ñòàäèéíûé êîíâåéåð
äâà 128-âõîäîâûõ TLB
âîçìîæíîñòü ïîñëåäîâàòåëüíîãî âûïîëíåíèÿ èíñòðóêöèé
ïåðåèìåíîâàíèå ðåãèñòðîâ
äèíàìè÷åñêîå
(register renaming)
ïðåäñêàçàíèå ïåðåõîäîâ
ïîääåðæêà ìíîãîïðîöåññîðíîñòè
íèçàöèè êýøåé
ïîñðåäñòâîì ñïåöèàëüíîãî ïðîòîêîëà ñèíõðî-
11.5. Ïðîöåññîðû PowerPC
ïîòðåáëåíèå 10Âò íà ÷àñòîòå 100MHz, îäèí ïðîãðàììíî êîíòðîëèðóåìûé ðåæèì ýêîíîìèè ýíåðãèè
T
PowerPC 604e (1994, 3600000 òðàíçèñòîðîâ):
Âàðèàíò PowerPC 604 äëÿ íàñòîëüíûõ ñèñòåì, ÷àñòîòà äî 300MHz
PowerPC 620 (1995, 7000000 òðàíçèñòîðîâ, íà ÷àñòîòå 133MHz 225 specint 92, 300 specfp 92):
128-áèò øèíà äàííûõ, 40-áèò øèíà àäðåñà, 64-áèò ðåãèñòðû
ñóïåðñêàëÿðíûé ïðîöåññîð (6 èíñòðóêöèé çà öèêë)
32Êá
êýø èíñòðóêöèé +
32Êá
êýø äàííûõ (64-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
6 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 2 IU + 1 FPU + 1 BU + 1 load/store
unit + 1 complex unit
AF
5-òè ñòàäèéíûé êîíâåéåð
2-õ óðîâíåâîå MMU, ïåðâè÷íîå MMU èìååò 64-âõîäîâûé TLB, âòîðè÷íîå MMU
èìååò 128-âõîäîâûé TLB
äëÿ óñêîðåíèÿ ïåðåõîäîâ count register (ctr) èìååò òåíåâîé ðåãèñòð, â êîòîðûé
îí ïåðåèìåíîâûâàåòñÿ âî âðåìÿ ïåðåõîäà
èíòåãðèðîâàííûé êîíòðîëëåð L2 êýøà
ïîòðåáëåíèå 30Âò íà ÷àñòîòå 100MHz, îäèí ïðîãðàììíî êîíòðîëèðóåìûé ðåæèì ýêîíîìèè ýíåðãèè
PowerPC G3 (1997, íå áîëåå 30000000 òðàíçèñòîðîâ, ÷àñòîòà 300MHz):
ðàçâèòèå PowerPC 620, èíòåãðèðîâàííûé L2 êýø
PowerPC G4 (1998, íå áîëåå 50000000 òðàíçèñòîðîâ, ÷àñòîòà 400MHz):
ðàçâèòèå PowerPC G3
IBM PowerPC 403 (1994):
PowerPC ìèêðîêîíòðîëëåð
2Êá êýø èíñòðóêöèé + 1Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
ïåðèôåðèéíûå èíòåðôåéñíûå óñòðîéñòâà: èíòåðôåéñ øèíû, DMA êîíòðîëëåð,
êîíòðîëëåð ïðåðûâàíèé (íà 6 çàïðîñîâ), ïîñëåäîâàòåëüíûé ïîðò
DR
äî âîñüìè èíòåðôåéñîâ áàíêîâ ïàìÿòè è óñòðîéñòâ ââîäà/âûâîäà
4 òàéìåðà
íèçêîå ïîòðåáëåíèå ýíåðãèè
Motorola MPC500 (1994, 40 MIPS, 25MHz):
PowerPC ìèêðîêîíòðîëëåð
4Êá êýø èíñòðóêöèé
4Êá SRAM
4 íåçàâèñèìûõ èñïîëíÿþùèõ óñòðîéñòâ: 1 IU + 1 FPU + 1 BU + 1 load/store
unit
êîíòðîëëåð ïðåðûâàíèé íà 32 çàïðîñà (âðåìÿ çàäåðæêè 1mks íà ÷àñòîòå
25MHz)
êîíòðîëëåð ïàìÿòè, ñïîñîáíûé óïðàâëÿòü 12 ìèêðîñõåìàìè ïàìÿòè
âñòðîåííûé àâòîòåñò
î÷åíü íèçêîå ïîòðåáëåíèå ýíåðãèè (530mW)
Motorola PowerQUICC (1996, 52 MIPS, 40MHz):
óëó÷øåííàÿ âåðñèÿ QUICC (M68360)
77
11. Àðõèòåêòóðû ïðîöåññîðîâ
ÿäðî CPU32+ çàìåíåíî íà ÿäðî MPC500
4 âûñîêîñêîðîñòíûõ ïîñëåäîâàòåëüíûõ êîììóíèêàöèîííûõ êàíàëà êîíòðîëèðóþòñÿ âûäåëåííûì RISC êîììóíèêàöèîííûì ïðîöåññîðîì, ðàáîòàþùèì íåçàâèñèìî îò îñíîâíîãî ïðîöåññîðà
PowerQUICC ïî ñðàâíåíèþ ñ QUICC èìååò êîíòðîëëåð PCMCIA 2.01 è àíàëîã
ïðîöåññîðà DSP
11.5.3. Ïðîãðàììíàÿ ìîäåëü
T
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû.
AF
32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 r31:
ñîäåðæàò ñëîâî (32/64 áèò)
32 ðåãèñòðà ñ ïëàâàþùåé òî÷êîé f0 f31:
ñîäåðæàò çíà÷åíèå ñ ïëàâàþùåé òî÷êîé (64 áèò)
cr (condition register):
ýòî 32-áèòíûé ðåãèñòð, ðàçäåëåííûé íà âîñåìü 4-õ áèòíûõ ïîëåé cr0cr7. Ïîëÿ ðåãèñòðà cr ìîãóò áûòü óñòàíîâëåíû îäíèì èç ñëåäóþùèõ ñïîñîáîâ.
DR
Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü óñòàíîâëåíî ñ ïîìîùüþ èíñòðóêöèè
ïåðåñûëêè mtcrf â cr èç ÐÎÍ.
Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü óñòàíîâëåíî ñ ïîìîùüþ èíñòðóêöèè
ïåðåñûëêè mcrf â cr èç äðóãîãî ïîëÿ cr.
Óêàçàííîå ïîëå ðåãèñòðà xer ìîæåò áûòü ñêîïèðîâàíî â ðåãèñòð cr ñ ïîìîùüþ
èíñòðóêöèè mcrxr.
Óêàçàííîå ïîëå ðåãèñòðà fpscr ìîæåò áûòü ñêîïèðîâàíî â ðåãèñòð cr ñ ïîìîùüþ
èíñòðóêöèè mcrfs.
Ïîëÿ ðåãèñòðà cr ìîãóò áûòü èçìåíåíû ñ ïîìîùüþ ëîãè÷åñêèõ îïåðàöèé, îïðåäåëåííûõ íàä ïîëÿìè cr.
cr0 ìîæåò áûòü íåÿâíûì ðåçóëüòàòîì öåëî÷èñëåííîé èíñòðóêöèè. Âñå öåëî÷èñëåííûå èíñòðóêöèè èìåþò áèò Rc; åñëè åãî óñòàíîâèòü, òî áèòû â cr0 áóäóò
óñòàíîâëåíû ñðàâíåíèåì ðåçóëüòàòà èíñòðóêöèè ñ íóëåì.
cr1 ìîæåò áûòü íåÿâíûì ðåçóëüòàòîì èíñòðóêöèè ñ ïëàâàþùåé òî÷êîé è óêàçûâàòü íà ñòàòóñ èñêëþ÷åíèÿ ñ ïëàâàþùåé òî÷êîé. Âñå èíñòðóêöèè ñ ïëàâàþùåé
òî÷êîé èìåþò áèò Rc; åñëè åãî óñòàíîâèòü, òî áèòû â cr1 áóäóò óñòàíîâëåíû
êîïèðîâàíèåì ñîîòâåòñòâóþùèõ áèòîâ èç fpscr.
Óêàçàííîå ïîëå ðåãèñòðà cr ìîæåò áûòü ðåçóëüòàòîì öåëî÷èñëåííîé èëè âåùåñòâåííîé èíñòðóêöèè ñðàâíåíèÿ.
fpscr (Floating Point Status and Control Register):
ýòî 32-áèòíûé ðåãèñòð, ñîäåðæàùèé âñå áèòû ñèãíàëîâ èñêëþ÷åíèé äëÿ îïåðàöèé
ñ ïëàâàþùåé òî÷êîé, áèòû ñóììàðíûõ èñêëþ÷åíèé, áèòû ðàçðåøåíèÿ èñêëþ÷åíèé,
áèòû óïðàâëåíèÿ îêðóãëåíèåì, íåîáõîäèìûå äëÿ óäîâëåòâîðåíèÿ ñòàíäàðòó IEEE
754.
xer register:
ýòî 32-áèòíûé ðåãèñòð, ñîäåðæàùèé ôëàãè ïåðåïîëíåíèÿ è ïåðåíîñîâ äëÿ öåëî÷èñëåííûõ îïåðàöèé. Òàêæå ñîäåðæèò ÷èñëî áàéòîâ, êîòîðûå íóæíî ïåðåäàòü â èíñòðóêöèÿõ Load String Word Indexed (lswx) èëè Store String Word Indexed (stswx)
lr (link register):
ýòî 32/64-áèòíûé ðåãèñòð, ñîäåðæàùèé àäðåñ ïåðåõîäà äëÿ èíñòðóêöèé Branch Conditional to Link Register (bclr) è Branch and Link (bl). Ñîäåðæèò àäðåñ âûçâàâøåé
ôóíêöèè ñðàçó ïîñëå âûçîâà.
78
11.6. Ïðîöåññîðû SPARC
T
ctr (count register):
ýòî 32/64-áèòíûé ðåãèñòð, ñîäåðæàùèé ñ÷åò÷èê öèêëà, êîòîðûé ìîæåò áûòü äåêðåìåíòèðîâàí â òå÷åíèå âûïîëíåíèÿ íàäëåæàùèì îáðàçîì çàêîäèðîâàííûõ èíñòðóêöèé ïåðåõîäà. Ðåãèñòð ctr ìîæåò òàêæå ñîäåðæàòü àäðåñ ïåðåõîäà äëÿ èíñòðóêöèè
Branch Conditional to Count Register (bcctr).
Ïîääåðæèâàþòñÿ ñëåäóþùèå äâà ðåæèìà àäðåñàöèè ïàìÿòè.
= (rA|0)+offset (âêëþ÷àÿ offset=0)
àäðåñ = (rA|0)+rB
àäðåñ
ãäå îáîçíà÷åíî
(rA|0) - ÐÎÍ r1. . . r31, åñëè rA íå ðàâíî r0, èíà÷å 0
AF
offset - 16-áèò ñìåùåíèå (çíàêîâî ðàñøèðÿåìîå)
rB - ÐÎÍ r0. . . r31
Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð
âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32/64 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå, õîòÿ ñóùåñòâóåò èíñòðóêöèÿ ñ 6-þ îïåðàíäàìè.
 áîëüøèíñòâå àðèôìåòè÷åñêèõ èíñòðóêöèé ìîæíî óñòàíîâèòü êîä óñëîâèÿ cr0 ïî ðåçóëüòàòó.
Îòìåòèì, ÷òî íåñìîòðÿ íà ïðèíàäëåæíîñòü ê êëàññó RISC ïðîöåññîðîâ, PowerPC èìååò
äàæå áîëüøå èíñòðóêöèé, ÷åì êëàññè÷åñêèé CISC ïðîöåññîð Motorola 68xxx.
11.6. Ïðîöåññîðû SPARC
 1987 ãîäó Sun Microsystems àííîíñèðîâàëà SUN-4 - ïåðâóþ êîìïüþòåðíóþ ñèñòåìó,
îñíîâàííóþ íà íîâîé RISC CPU àðõèòåêòóðå SPARC (Scalable Processor ARChitecture). Â
îòëè÷èå îò ìíîãèõ äðóãèõ ïðîöåññîðîâ, SPARC ïîçèöèîíèðîâàëñÿ êàê îòêðûòàÿ àðõèòåêòóðà, êîòîðóþ ìîãóò èñïîëüçîâàòü âñå.
DR
11.6.1. Îáùèé îáçîð
SPARC ïðîöåññîðû èñïîëüçóþò Áåðêëåâñêóþ àðõèòåêòóðó, îñíîâàííóþ íà ðåãèñòðîâûõ
îêíàõ. Âíóòðåííèå ðåãèñòðû îáðàçóþò áëîêè ñ ÷àñòè÷íûì ïåðåêðûòèåì. Èññëåäîâàòåëè
Áåðêëè ïðåäëîæèëè èñïîëüçîâàòü âíóòðåííèé ñòåê äëÿ òîãî, ÷òîáû èçáåæàòü ñîõðàíåíèÿ
è âîññòàíîâëåíèÿ ðåãèñòðîâ âî âíåøíåé ïàìÿòè. Îñíîâíîé öåëüþ áûëî óñêîðåíèå âûçîâîâ
ïðîöåäóð çà ñ÷åò ìèíèìèçàöèè ÷èñëà îáðàùåíèé ê ïàìÿòè, òðåáóåìûõ äëÿ ïåðåäà÷è ïàðàìåòðîâ è ïîëó÷åíèÿ ðåçóëüòàòà.
 êàæäûé ìîìåíò âðåìåíè ôóíêöèÿ ìîæåò èìåòü äîñòóï ê 32 ðåãèñòðàì: 8 global registers (r0 - r7, îáùèå äëÿ âñåõ ôóíêöèé) è îêíó èç 24 ðåãèñòðîâ (r8 - r31). Ðåãèñòðîâûå îêíà
ïåðåêðûâàþòñÿ ïî 8-ìè ðåãèñòðàì. Â êàæäîé ôóíêöèè âûäåëÿþò 8 in registers (r24 - r31 èëè
i0 - i7) (ñîâïàäàþò ñ out registers â ïðîöåäóðå, âûçâàâøåé äàííóþ), 8 local registers (r16 - r23
èëè l0 - l7) (äîñòóïíû òîëüêî äàííîé ïðîöåäóðå) è 8 out registers (r8 - r15 èëè o0 - o7) (ñîâïàäàþò ñ in registers â ëþáîé ïðîöåäóðå, âûçâàííîé äàííîé). Ïðè âûçîâå ôóíêöèè ïðîèñõîäèò
ïåðåêëþ÷åíèå îêîí, òàê, ÷òî âûçâàííàÿ ôóíêöèÿ ïîëó÷àåò íîâûé íàáîð ðåãèñòðîâ l0 - l7,
o0 - o7 è ðàçäåëÿåò ðåãèñòðû i0 - i7 ñ âûçâàâøåé ôóíêöèåé (ãäå îíè àäðåñîâàëèñü êàê o0 o7). Ïîýòîìó â ðåãèñòðàõ o0 - o7 óäîáíî ðàçìåùàòü ïàðàìåòðû äëÿ âûçâàííîé ïðîöåäóðû, â
ðåãèñòðàõ l0 - l7 - ëîêàëüíûå ïåðåìåííûå.
Ðàçìåð êàæäîãî îêíà - 16 ðåãèñòðîâ (8 out + 8 local ðåãèñòðîâ). Ôèðìà SUN ñïåöèôèöèðîâàëà, ÷òî ÷èñëî îêîí ìîæåò áûòü îò 2 äî 32 (â çàâèñèìîñòè îò ðåàëèçàöèè). Òåì ñàìûì
îáùåå ÷èñëî ðåãèñòðîâ â îêíàõ - îò 40 (2x16+8) äî 520 (32x16+8).
Åñëè ãëóáèíà âëîæåííîñòè ôóíêöèé ïðåâûøàåò ÷èñëî îêîí, òî ïðîöåññîð ãåíåðèðóåò ïðåðûâàíèå è îïåðàöèîííàÿ ñèñòåìà äîëæíà ñîõðàíèòü ÷àñòü îêîí â ïàìÿòè.
79
11. Àðõèòåêòóðû ïðîöåññîðîâ
11.6.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
T
Ñóùåñòâóåò âîçìîæíîñòü âûçâàòü ôóíêöèþ áåç ïåðåêëþ÷åíèÿ îêîí.
Äðóãîé âàæíîé îñîáåííîñòüþ SPARC àðõèòåêòóðû ÿâëÿþòñÿ delay slots (ñì. ñ. 60).
Ðåàëèçàöèÿ âñåõ SPARC ïðîöåññîðîâ óäîâëåòâîðÿåò âåðñèè àðõèòåêòóðû SPARC ñ òåì
èëè èíûì íîìåðîì. Âàæíåéøåé ôóíêöèåé SPARC International Compatibility and Compliance Committee ÿâëÿåòñÿ âûðàáîòêà è ïóáëèêàöèÿ SPARC Compliance Definitions, à òàêæå
èíñòðóêöèé ïî ïåðåõîäó îò îäíîãî îïðåäåëåíèÿ ê äðóãîìó.
Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè.
AF
SPARC (1987, 55000 òðàíçèñòîðîâ, 33 MHz, 20 MIPS):
136 32-áèò ðåãèñòðîâ
32-áèò øèíà àäðåñà è äàííûõ
4-õ ñòàäèéíûé êîíâåéåð
2 èñïîëíÿþùèõ óñòðîéñòâà: 1 IU (data + address) + 1 shift unit
âíåøíèé CMU (Cache controller and MMU) è FPC (Floating Point Controller)
âñåãî 50 èíñòðóêöèé, êàæäàÿ èñïîëíÿåòñÿ çà 1 öèêë
MICROSPARC-II (1994, 85 MHz, 85 MIPS, 64 Specint 92, 55 Specfp 92):
32-áèò SPARC V8 àðõèòåêòóðà
16Êá êýø èíñòðóêöèé + 8Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
3 èñïîëíÿþùèõ óñòðîéñòâà: 1 IU + 1 FPU + 1 MMU
èíòåðôåéñ ñîïðîöåññîðà
âñòðîåííàÿ ëîãèêà äëÿ ïîääåðæêè DRAM è ââîäà/âûâîäà
SuperSPARC-II (1995, 3100000 òðàíçèñòîðîâ, 90 MHz, 148 Specint 92, 143 Specfp 92):
32-áèò SPARC V8 àðõèòåêòóðà
64-âõîäîâûé TLB (äëÿ îáîèõ êýøåé)
áèòû ïðåäñêàçàíèÿ ïåðåõîäîâ
3 èíñòðóêöèè çà öèêë
DR
8-ìè ïîðòîâûé 32x32 ôàéë ðåãèñòðîâ
20Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (32-áèò Ãàðâàðäñêàÿ àðõèòåêòóðà)
64-áèò øèíà äàííûõ
4-õ ñòàäèéíûé êîíâåéåð
èñïîëíÿþùèõ óñòðîéñòâ: 3 IU + 1 FPU multiply + 1 FPU divide + 1 BU + 1
load/store unit
7
UltraSPARC-II (1996, 250 MHz, 400 Specint 92, 450 Specfp 92):
64-áèò SPARC V9 àðõèòåêòóðà
80
4
ðåàëüíî èñïîëíÿåìûõ èíñòðóêöèè çà öèêë
ñóïåðñêàëÿðíûé ïðîöåññîð: 6 èñïîëíÿþùèõ óñòðîéñòâ: 2 IU + 2 FPU + 1 BU +
1 load/store unit
9-òè
ñòàäèéíûé êîíâåéåð
ïðåäñêàçàíèå ïåðåõîäîâ
register scoreboarding
bi-endian (big- è little-endian ïîðÿäîê áàéòîâ)
11.6. Ïðîöåññîðû SPARC
64-áèò âèðòóàëüíûé àäðåñ è öåëî÷èñëåííûå äàííûå
ñïåêóëÿòèâíîå èñïîëíåíèå
T
ìíîãîóðîâíåâàÿ îáðàáîòêà ïðåðûâàíèé, îðãàíèçîâàííûõ â ñòåê
âñòðîåííàÿ ìóëüòèìåäèéíàÿ ïîääåðæêà äëÿ 2-õ è 3-õ ìåðíîé ãðàôèêè è íîâûé
îïòèìèçèðîâàííûé íàáîð ìóëüòèìåäèà èíñòðóêöèé
ïîääåðæêà ñèëüíî ñâÿçàííûõ ïðîöåññîðîâ (äî 4-õ ïðîöåññîðîâ ìîãóò ðàçäåëÿòü
îäíó øèíó àäðåñà)
11.6.3. Ïðîãðàììíàÿ ìîäåëü
AF
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû.
32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 r31:
ñîäåðæàò ñëîâî (32 áèò). Ëþáàÿ ïàðà rN, r(N+1) ïðè ÷åòíîì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò. Ðåãèñòðû îðãàíèçîâàíû â âèäå îêîí ïî 24 ðåãèñòðà ñ ïåðåêðûòèåì
ïî 8-ìè ðåãèñòðàì. Âûäåëÿþò
g0 - g7: ýòî ðåãèñòðû r0 - r7, ÿâëÿþòñÿ îáùèìè äëÿ âñåõ ôóíêöèé (ò.å. íå ó÷àñòâóþò
â ïåðåêëþ÷åíèè ðåãèñòðîâûõ îêîí). Ðåãèñòð g0 - ñïåöèàëüíûé: ïðè ÷òåíèè
èç íåãî âñåãäà ÷èòàåòñÿ 0, ïðè çàïèñè â íåãî íè÷åãî íå ïðîèñõîäèò (çàïèñü
íå ïðîèçâîäèòñÿ, èç ðåãèñòðà âñåãäà ÷èòàåòñÿ 0)
o0 - o7: ýòî ðåãèñòðû r8 - r15 (out registers); ÿâëÿþòñÿ in registers äëÿ ëþáîé ôóíêöèè, âûçâàííîé äàííîé (ò.å. äîñòóïíû âûçâàííîé ôóíêöèè); ðåãèñòð o7 ñïåöèàëüíûé, èíñòðóêöèÿ CALL çàïèñûâàåò â íåãî ñâîé ñîáñòâåííûé àäðåñ
(ò.å. àäðåñ âîçâðàòà - 8)
l0 - l7:
ýòî ðåãèñòðû r16 - r23 (local registers); íå äîñòóïíû íè ôóíêöèè, âûçâàâøåé
äàííóþ, íè ôóíêöèÿì, âûçâàííûì äàííîé
i0 - i7:
ýòî ðåãèñòðû r24 - r31 (in registers); ÿâëÿþòñÿ out registers äëÿ ôóíêöèè,
âûçâàâøåé äàííóþ (ò.å. äîñòóïíû âûçâàâøåé ôóíêöèè è íå äîñòóïíû ëþáîé
ôóíêöèè, âûçâàííîé äàííîé)
DR
32 ðåãèñòðà ñ ïëàâàþùåé òî÷êîé f0 - f31:
ñîäåðæàò çíà÷åíèå ñ ïëàâàþùåé òî÷êîé (32 áèò). Ëþáàÿ ïàðà fN, f(N+1) ïðè ÷åòíîì
N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò (floating point double), ëþáàÿ ÷åòâåðêà
fN, f(N+1), f(N+2), f(N+3) ïðè êðàòíîì 4-ì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 128
áèò (floating point quadre).
y (multiply/divide register):
ñîäåðæèò ñòàðøóþ ÷àñòü ïðîèçâåäåíèÿ (â èíñòðóêöèÿõ óìíîæåíèÿ) èëè ñòàðøóþ
÷àñòü äåëèìîãî (â èíñòðóêöèÿõ äåëåíèÿ); ÷èòàåòñÿ è çàïèñûâàåòñÿ èíñòðóêöèÿìè
RDY è WRY
Öåëî÷èñëåííûå êîäû óñëîâèÿ icc (integer condition code):
ÿâëÿþòñÿ ÷àñòüþ PSR (Processor State Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó àðèôìåòè÷åñêèõ îïåðàöèé (åñëè ýòî óêàçàíî â èíñòðóêöèè) èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà.
Ïîääåðæèâàþòñÿ ñëåäóþùèå äâà ðåæèìà àäðåñàöèè ïàìÿòè.
= rA+offset (âêëþ÷àÿ offset=0)
àäðåñ = rA+rB
àäðåñ
ãäå îáîçíà÷åíî
81
11. Àðõèòåêòóðû ïðîöåññîðîâ
rA, rA - ÐÎÍ r0. . . r31
offset - 13-áèò ñìåùåíèå (çíàêîâî ðàñøèðÿåìîå)
T
Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå.
 áîëüøèíñòâå àðèôìåòè÷åñêèõ èíñòðóêöèé ìîæíî óñòàíîâèòü êîäû óñëîâèÿ icc ïî ðåçóëüòàòó.
11.7. Ïðîöåññîðû Intel 80960x
AF
Ïðîöåññîðû Intel 80960x çàíèìàþò çíà÷èòåëüíîå ìåñòî íà ðûíêå âñòðàèâàåìûõ êîìïüþòåðîâ. Íà èõ áàçå ïîñòðîåíî çíà÷èòåëüíîå êîëè÷åñòâî óïðàâëÿþùèõ ñèñòåì äëÿ ïðèíòåðîâ,
SCSI êîíòðîëëåðîâ, ñåòåâûõ êîììóòàòîðîâ.
11.7.1. Îáùèé îáçîð
Ïðîöåññîðû Intel 80960x áûëè ñïåöèàëüíî ðàçðàáîòàíû äëÿ âñòðàèâàåìûõ ñèñòåì. ßâëÿþòñÿ 32-áèòíûìè RISC ïðîöåññîðàìè ñ ÷åðòàìè, ïðèñóùèìè CISC ïðîöåññîðàì. Êàê RISC
ïðîöåññîðû èìåþò:
çíà÷èòåëüíîå ÷èñëî ðåãèñòðîâ (32)
àðõèòåêòóðó load/store
ôèêñèðîâàííûé ôîðìàò èíñòðóêöèé (âñå èíñòðóêöèè, êðîìå load/store, èìåþò ðàçìåð
4 áàéòà)
Êàê CISC ïðîöåññîðû èìåþò:
çíà÷èòåëüíîå ÷èñëî ðåæèìîâ àäðåñàöèè ïàìÿòè (11)
DR
ïåðåìåííóþ äëèíó èíñòðóêöèé (èíñòðóêöèè load/store ìîãóò èìåòü äëèíó 8 áàéò, âñå
îñòàëüíûå èìåþò äëèíó 4 áàéòà)
Ñïåöèàëüíî äëÿ ñèñòåì ðåàëüíîãî âðåìåíè èìåþò:
âñòðîåííûé ïðîãðàììèðóåìûé êîíòðîëëåð ïðåðûâàíèé, ïîäêëþ÷åííûé ê 8-ìè âíåøíèì
ëèíèÿì ïðåðûâàíèÿ
âñòðîåííûå ïîäïðîãðàììû (ìèêðîêîä) äëÿ àâòîìàòè÷åñêîãî ïåðåêëþ÷åíèÿ êîíòåêñòà
ïðè ïðåðûâàíèè
âñòðîåííîå ÎÇÓ (îáû÷íî 1Êá) äëÿ õðàíåíèÿ òàáëèöû ïðåðûâàíèé
âñòðîåííûé êýø ðåãèñòðîâ, óñêîðÿþùèé ïåðåêëþ÷åíèå êîíòåêñòà
âñòðîåííûå ïðîãðàììèðóåìûå òàéìåðû (ðÿä ìîäåëåé)
Ïðîöåññîðû Intel 80960x îñîáåííî ýôôåêòèâíû â ïðèëîæåíèÿõ, òðåáóþùèõ îáñëóæèâàíèÿ áîëüøîãî êîëè÷åñòâà ïðåðûâàíèé è ïåðåñûëêè áîëüøèõ îáúåìîâ äàííûõ, òàêèõ, êàê
îáðàáîòêà ãðàôè÷åñêîé èíôîðìàöèè è êîììóíèêàöèîííûå çàäà÷è.
Îñíîâíîé îñîáåííîñòüþ ïðîöåññîðîâ Intel 80960x ÿâëÿåòñÿ èñïîëüçîâàíèå àâòîìàòè÷åñêè
ñîõðàíÿåìûõ ïðè âûçîâå ïðîöåäóð è ïåðåêëþ÷åíèÿõ êîíòåêñòà íàáîðîâ ðåãèñòðîâ, ÷òî ïðèâîäèò ê ìèíèìèçàöèè ÷èñëà îáðàùåíèé ê ïàìÿòè.  êàæäûé ìîìåíò âðåìåíè ôóíêöèÿ ìîæåò
èìåòü äîñòóï ê 32 ðåãèñòðàì: 16-òè global registers (g0 - g15), îáùèõ äëÿ âñåõ ôóíêöèé, è
íàáîðó èç 16-òè local registers (l0 - l15), äîñòóïíûõ òîëüêî ýòîé ôóíêöèè. Ïðè âûçîâå ïðîöåäóðû ïðîèñõîäèò ïåðåêëþ÷åíèå íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ, òàê, ÷òî âûçâàííàÿ ôóíêöèÿ
82
11.7. Ïðîöåññîðû Intel 80960x
11.7.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
T
ïîëó÷àåò íîâûé íàáîð ðåãèñòðîâ l0 - l15 è ðàçäåëÿåò ðåãèñòðû g0 - g15 ñ âûçâàâøåé ôóíêöèåé. Ïîýòîìó â ðåãèñòðàõ g0 - g15 óäîáíî ðàçìåùàòü ïàðàìåòðû äëÿ âûçâàííîé ïðîöåäóðû, â
ðåãèñòðàõ l0 - l15 - ëîêàëüíûå ïåðåìåííûå. Âíóòðè ïðîöåññîðà åñòü êýø äëÿ íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ (îáû÷íî íà 4 íàáîðà). Åñëè ãëóáèíà âëîæåííîñòè ôóíêöèé ïðåâûøàåò ðàçìåð
êýøà, òî ïðîöåññîð ãåíåðèðóåò ïðåðûâàíèå è îïåðàöèîííàÿ ñèñòåìà äîëæíà ñîõðàíèòü ÷àñòü
íàáîðîâ ðåãèñòðîâ â ïàìÿòè. Îòìåòèì, ÷òî ñóùåñòâóåò âîçìîæíîñòü âûçâàòü ôóíêöèþ áåç
ïåðåêëþ÷åíèÿ íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ.
AF
Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ îáëàäàåò âñåìè âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè.
i80960Kx (1988, 20 MHz, 7.5 MIPS):
32-áèò àðõèòåêòóðà ñ 4Gb àäðåñíûì ïðîñòðàíñòâîì
32-áèò ìóëüòèïëåêñèðîâàííàÿ øèíà àäðåñà è äàííûõ, äèíàìè÷åñêîå èçìåíåíèå
øèðèíû øèíû (àäàïòèðóåòñÿ ê 8-ìè, 16-òè è 32-õ áèòíûì îáìåíàì ñ âíåøíèìè
óñòðîéñòâàìè)
512 áàéò êýø èíñòðóêöèé, çàãðóæàåìûé áëî÷íûìè ïåðåñûëêàìè (burst access)
êýø êîíòðîëëåð (ó i80960KB)
16 ãëîáàëüíûõ è 16 ëîêàëüíûõ ðåãèñòðîâ, êýø íà 4 íàáîðà ëîêàëüíûõ ðåãèñòðîâ
register scoreboarding (ñì. ñ. 58)
i80960Sx (1988, 16 MIPS):
16-áèò âíåøíÿÿ øèíà äàííûõ
Ãàðâàðäñêàÿ àðõèòåêòóðà:
512-áàéò
êýø èíñòðóêöèé +
âñòðîåííîå FPU ïðîèçâîäèòåëüíîñòüþ
256-áàéò
0 5 MFlops (ó i80960SB)
êýø äàííûõ
:
i80960Cx (600000 òðàíçèñòîðîâ, 33 MHz, 66 MIPS):
32-áèò øèíû àäðåñà è äàííûõ
128 áèòíûå âíóòðåííèå øèíû äàííûõ
èíñòðóêöèè çà öèêë
DR
2
1Êá êýø èíñòðóêöèé
âñòðîåííîå 1Êá ÎÇÓ
óñòðîéñòâî ïðåäñêàçàíèÿ ïåðåõîäîâ
âñòðîåííàÿ ïîääåðæêà 4-õ êàíàëîâ DMA (Direct Memory Access)
i80960Jx (1994, 50 MHz, 45 MIPS):
1 èíñòðóêöèÿ çà öèêë
8
íàáîðîâ ëîêàëüíûõ ðåãèñòðîâ
âñòðîåííûé êîíòðîëëåð ïðåðûâàíèé, âîçìîæíîñòü óïðàâëÿòü êýøèðîâàíèåì
äëÿ ðàçìåùåíèÿ òàáëèöû ïðåðûâàíèé, îáðàáîò÷èêîâ ïðåðûâàíèé è èõ ñòåêîâ â
êýøèðóåìîé îáëàñòè
4Êá
êýø èíñòðóêöèé +
2Êá
êýø äàííûõ (ó i80960JF)
âñòðîåííîå 1Êá ÎÇÓ
2 âñòðîåííûõ òàéìåðà
i80960Hx (1995, 75 MHz, 150 MIPS):
ýëåêòðè÷åñêè è ëîãè÷åñêè (ò.å. ïî íîæêàì ìèêðîñõåìû è ïî èñïîëíÿåìîìó êîäó)
ñîâìåñòèì ñ i80960Cx
83
11. Àðõèòåêòóðû ïðîöåññîðîâ
16Êá
êýø èíñòðóêöèé +
8Êá
êýø äàííûõ
32-áèò øèíû àäðåñà è äàííûõ ñ ïîääåðæêîé êîíâåéåðíûõ è áëî÷íûõ ïåðåñûëîê
îáåñïå÷èâàþò ïðîïóñêíóþ ñïîñîáíîñòü 160Ìá/ñ
âñòðîåííîå
2Êá
ÎÇÓ
âñòðîåííûå 32-áèò òàéìåðû
T
i80960RP (1996, 33 MHz):
32-áèò ïðîöåññîð, ñîäåðæàùèé ÿäðî i80960JF
ïîääåðæêà èíòåðôåéñîâ ñ äâóìÿ øèíàìè PCI
ïðÿìîé äîñòóï ìåæäó øèíàìè PCI è ëîêàëüíîé øèíîé ïðîöåññîðà
âñòðîåííûé êîíòðîëëåð ïàìÿòè
AF
IC
ïîääåðæêà èíòåðôåéñà øèíû 2
ýíåðãîïîòðåáëåíèå ìåíüøå 3 Âò
11.7.3. Ïðîãðàììíàÿ ìîäåëü
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû ñëåäóþùèå ðåãèñòðû.
32 öåëî÷èñëåííûõ ðåãèñòðà îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 - r31:
ñîäåðæàò ñëîâî (32 áèò). Ïðè ýòîì
ïàðà rN, r(N+1) ïðè ÷åòíîì N ìîæåò ñîäåðæàòü äàííûå äëèíîé 64 áèò
òðîéêà rN, r(N+1), r(N+2) ïðè N, êðàòíîì 4, ìîæåò ñîäåðæàòü äàííûå äëèíîé
96 áèò
÷åòâåðêà rN, r(N+1), r(N+2), r(N+3) ïðè N, êðàòíîì 4, ìîæåò ñîäåðæàòü äàííûå
äëèíîé 128 áèò
Íàä òàêèìè îïåðàíäàìè (äëèíîé áîëåå 32 áèò) îïðåäåëåíû òîëüêî èíñòðóêöèè ïåðåñûëêè (load/store). Âûäåëÿþò
ýòî ðåãèñòðû r0 r15 (global registers); ÿâëÿþòñÿ îáùèìè äëÿ âñåõ ôóíêöèé
(ò.å. íå èçìåíÿþòñÿ ïðè âûçîâå ôóíêöèé). Ðåãèñòð g15 çàðåçåðâèðîâàí â êà÷åñòâå óêàçàòåëÿ òåêóùåãî ñòåêîâîãî êàäðà (îí èñïîëüçóåòñÿ ïðîöåññîðîì,
êîãäà íàäî ñîõðàíèòü èëè âîññòàíîâèòü íàáîð ëîêàëüíûõ ðåãèñòðîâ).
DR
g0 - g15:
l0 - l15: ýòî ðåãèñòðû r16 r31 (local registers); íå äîñòóïíû íè ôóíêöèè, âûçâàâøåé
äàííóþ, íè ôóíêöèÿì, âûçâàííûì äàííîé. Ïðè âûçîâå ôóíêöèè ñòàðûé
íàáîð ëîêàëüíûõ ðåãèñòðîâ ñîõðàíÿåòñÿ âî âíóòðåííåì êýøå, è âûçâàííàÿ
ôóíêöèÿ ïîëó÷àåò íîâûé íàáîð, â êîòîðîì:
l0:
ñîäåðæèò ïðåäûäóùåå çíà÷åíèå óêàçàòåëÿ òåêóùåãî ñòåêîâîãî êàäðà
l1:
ñîäåðæèò óêàçàòåëü ñòåêà
l2:
ñîäåðæèò àäðåñ âîçâðàòà
l3 - l15: çíà÷åíèÿ íå îïðåäåëåíû
ip (instruction pointer register):
ñîäåðæèò àäðåñ òåêóùåé èíñòðóêöèè. Äîñòóïåí òîëüêî ïî ÷òåíèþ è ìîæåò áûòü
èñïîëüçîâàí ïðè ôîðìèðîâàíèè àäðåñà.
Öåëî÷èñëåííûå êîäû óñëîâèÿ icc (integer condition code):
ÿâëÿþòñÿ ÷àñòüþ AC (Arithmetic Control Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ â êîìàíäàõ óñëîâíîãî ïåðåõîäà.
84
11.8. Ïðîöåññîðû ARM
T
Âñå ðåæèìû àäðåñàöèè ïàìÿòè ïðîöåññîðîâ Intel 80960x ìîæíî çàïèñàòü îäíîé ôîðìóëîé:
àäðåñ ÿ÷åéêè ïàìÿòè åñòü
base + index scale + displacement
ãäå
base áàçîâûé ðåãèñòð: r0 r31, ip
index èíäåêñíûé ðåãèñòð: r0 r31 (îòñóòñòâóåò, åñëè
scale öåëàÿ êîíñòàíòà 1, 2, 4, 8, 16
base
åñòü ip)
displacement íåîòðèöàòåëüíîå ñìåùåíèå 12 èëè 32 áèò (12 áèò ñìåùåíèå ìîæíî èñïîëüçîâàòü òîëüêî â ðåæèìå base + displacement).
AF
Ëþáîé èç ýëåìåíòîâ àäðåñà ìîæåò îòñóòñòâîâàòü (ñ îäíèì èñêëþ÷åíèåì: åñëè îòñóòñòâóåò
index, òî äîëæåí îòñóòñòâîâàòü è scale).
Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò). Ïîäàâëÿþùåå áîëüøèíñòâî èíñòðóêöèé òðåõîïåðàíäíûå.
Îòìåòèì, ÷òî ýòî åäèíñòâåííûé èç ðàññìàòðèâàåìûõ íàìè ïðîöåññîðîâ, â êîòîðîì æåñòêî
(àïïàðàòíî) çàêðåïëåíî, ÷òî ñòåê ðàñòåò ââåðõ (îò ñòàðøèõ àäðåñîâ ê ìëàäøèì).
11.8. Ïðîöåññîðû ARM
Ïðîöåññîðû ARM, ðàçðàáàòûâàåìûå ôèðìîé ARM (Advansed RISC Machines), èãðàþò
çíà÷èòåëüíóþ ðîëü íà ðûíêå âñòðàèâàåìûõ ñèñòåì, îñîáåííî íà ðûíêå ìèíèàòþðíûõ ñèñòåì,
ñî÷åòàþùèõ âûñîêèå ïèêîâûå íàãðóçêè ñ äëèòåëüíûìè ïåðèîäàìè îæèäàíèÿ (íàïðèìåð, ìîáèëüíûå òåëåôîíû).
11.8.1. Îáùèé îáçîð
Êîìïàíèÿ ARM (Advansed RISC Machines) áûëà îñíîâàíà â íîÿáðå 1990 ãîäà ôèðìàìè
Acorn Computers (èíôîðìàöèîííûå òåõíîëîãèè äëÿ îáðàçîâàíèÿ, Âåëèêîáðèòàíèÿ)
DR
Apple Computers
VLSI Technology
Îñíîâíîé öåëüþ êîìïàíèè ÿâëÿåòñÿ ðàçðàáîòêà ìèêðîïðîöåññîðíûõ ÿäåð è èõ ëèöåíçèðîâàíèå øèðîêîìó êðóãó ïðîèçâîäèòåëåé. Â ñèëó ìàëîñòè ïðîöåññîðíîãî ÿäðà ARM (âñåãî
35000 òðàíçèñòîðîâ â áàçîâîì ÿäðå ARM7) îíî èäåàëüíî ïîäõîäèò äëÿ èíòåãðàöèè â ñïåöèàëèçèðîâàííûå ìèêðîñõåìû ïîòðåáèòåëåé. ARM Design Service Group ïîñòîÿííî ðàáîòàåò ñ
ïàðòíåðàìè, îáåñïå÷èâàÿ ARM ýêñïåðòèçó OEM ïîòðåáèòåëÿì, æåëàþùèì èìåòü âñòðîåííûå
â ìèêðîñõåìû ðåøåíèÿ íà îñíîâå ÿäåð ARM.
 íàñòîÿùåå âðåìÿ ñëåäóþùèå êîìïàíèè ëèöåíçèðîâàëè ARM è ïðîèçâîäÿò ìèêðîñõåìû
íà åãî îñíîâå:
1. VLSI Technology
2. Texas Instruments (TI)
3. Samsung Corporation
4. NEC Corporation
5. GEC Plessey Semiconductors (GPS)
85
11. Àðõèòåêòóðû ïðîöåññîðîâ
7. Digital Equipment Corporation
8. Symbios Logic
9. Sharp Corporation
10. Asahi Kasai Microsystems (AKM)
11. European Silicon Structures (ES2)
AF
12. Lucky Goldstar Corporation
T
6. Cirrus Logic
13. Intel Corporation
14. IBM Corporation
Íà îñíîâå ARM ÿäðà ðàçðàáîòàíî áîëåå 30 ìèêðîïðîöåññîðîâ è ñïåöèàëèçèðîâàííûõ ìèêðîñõåì. Îíè íàõîäÿò ïðèìåíåíèå â ñîòîâûõ òåëåôîíàõ, îðãàíàéçåðàõ, ìîäåìàõ, ãðàôè÷åñêèõ
óñêîðèòåëÿõ, âèäåîôîíàõ, êàìåðàõ, òåëåôîííûõ êîììóòàòîðàõ, èãðîâûõ ïðèñòàâêàõ, äèñêîâûõ íàêîïèòåëÿõ, âûñîêîïðîèçâîäèòåëüíûõ ðàáî÷èõ ñòàíöèÿõ, àâòîìîáèëüíûõ íàâèãàöèîííûõ ñèñòåìàõ, öèôðîâûõ äåêîäåðàõ, smart êàðòàõ, ëàçåðíûõ ïðèíòåðàõ.
Îñíîâíûå îòëè÷èòåëüíûå ÷åðòû àðõèòåêòóðû ARM:
1. Âñå èíñòðóêöèè ÿâëÿþòñÿ óñëîâíûìè (ò.å. âûïîëíÿþòñÿ, òîëüêî åñëè êîä óñëîâèÿ ñîâïàäàåò ñ êîäîì, óêàçàííûì â èíñòðóêöèè). Ýòî ïîçâîëÿåò óâåëè÷èòü ïëîòíîñòü êîäà è
óìåíüøèòü ïîòðåáíîñòü â èíñòðóêöèÿõ áëèçêîãî ïåðåõîäà. Êàê ñëåäñòâèå, íåò îòäåëüíûõ êîìàíä óñëîâíîãî ïåðåõîäà.
2. Âñå öåëî÷èñëåííûå àðèôìåòè÷åñêèå èíñòðóêöèè ìîãóò âûïîëíÿòü îïåðàöèþ ñäâèãà íàä
îïåðàíäàìè çà òîò æå öèêë, ÷òî âûïîëíÿåòñÿ è ñàìà èíñòðóêöèÿ. Êàê ñëåäñòâèå, íåò
îòäåëüíûõ êîìàíä ñäâèãà.
DR
3. Íåò öåëî÷èñëåííîé èíñòðóêöèè äåëåíèÿ.
4. Âîçìîæíîñòü âûïîëíÿòü DSP-ïîäîáíûå ôóíêöèè:
à) ïðèñóòñòâóþò èíñòðóêöèè óìíîæåíèÿ è óìíîæåíèÿ ñî ñëîæåíèåì (multiplyaccumulate (MLA))
á) ïðèñóòñòâóþò èíñòðóêöèè áëî÷íîãî ÷òåíèÿ èç ïàìÿòè è áëî÷íîé çàïèñè â ïàìÿòü,
ïîçâîëÿþùèå ïåðåñëàòü ëþáîå ïîäìíîæåñòâî èç 16-òè ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ.
5. Íåêîòîðûå ìîäåëè ìîãóò ðàáîòàòü â òàê íàçûâàåìîì THUMB ðåæèìå: èíñòðóêöèè
êîäèðóþòñÿ 16-þ áèòàìè âìåñòî 32-õ. Ýòî çíà÷èòåëüíî óâåëè÷èâàåò ïëîòíîñòü êîäà, íî
íàêëàäûâàåò ðÿä îãðàíè÷åíèé íà ñèñòåìó êîìàíä:
à) ïîëíîöåííî äîñòóïíû òîëüêî 8 ðåãèñòðîâ èç 16-òè, îñòàëüíûå ìîãóò îãðàíè÷åííî
èñïîëüçîâàòüñÿ òîëüêî â íåêîòîðûõ èíñòðóêöèÿõ (íàïðèìåð, MOV, ADD è CMP);
á) íå ïîääåðæèâàåòñÿ óñëîâíîå èñïîëíåíèå èíñòðóêöèé, êàê ñëåäñòâèå, ïîÿâèëàñü íîâàÿ èíñòðóêöèÿ óñëîâíîãî ïåðåõîäà;
â) íå ïîääåðæèâàåòñÿ îïåðàöèÿ ñäâèãà íàä îïåðàíäàìè â öåëî÷èñëåííûõ àðèôìåòè÷åñêèõ èíñòðóêöèÿõ, êàê ñëåäñòâèå, ïîÿâèëèñü íîâûå èíñòðóêöèè ñäâèãà;
ã) âñå èíñòðóêöèè äâóõîïåðàíäíûå (à íå òðåõîïåðàíäíûå êàê â îáû÷íîì ðåæèìå).
86
11.8. Ïðîöåññîðû ARM
11.8.2. Îñíîâíûå ÷ëåíû ñåìåéñòâà
ARM1:
T
Êàæäûé ïðîöåññîð â ïðèâåäåííûõ íèæå òåõíè÷åñêèõ äàííûõ â-îñíîâíîì îáëàäàåò âñåìè
âîçìîæíîñòÿìè ïðåäûäóùèõ ïðîöåññîðîâ äëÿ îáåñïå÷åíèÿ ñîâìåñòèìîñòè.
Ïðîòîòèï, èñïîëüçîâàëñÿ òîëüêî â òåñòîâûõ ñèñòåìàõ
ARM2 (8 MHz, 4.7 MIPS):
64Êá àäðåñíîå ïðîñòðàíñòâî
ARM3 (33 MHz, 18 MIPS):
ARM2 ÿäðî
4Êá åäèíûé êýø
AF
èíòåðôåéñ ñîïðîöåññîðà
äîáàâëåíà íîâàÿ èíñòðóêöèÿ SWP äëÿ ðàáîòû ñ ñåìàôîðàìè
ARM6 (36000 òðàíçèñòîðîâ, 33 MHz, 28 MIPS):
4Ãá àäðåñíîå ïðîñòðàíñòâî
ARM600:
bi-endian (big- è little-endian ïîðÿäîê áàéòîâ)
èíòåðôåéñ ñîïðîöåññîðà
ARM6 ñî âñòðîåííûì MMU
ARM7 (35000 òðàíçèñòîðîâ):
ARM6 ÿäðî, ñïîñîáíîå ðàáîòàòü íà ïîâûøåííîé ÷àñòîòå
ARM7D:
3-õ ñòàäèéíûé êîíâåéåð
óëó÷øåííàÿ èíñòðóêöèÿ àïïàðàòíîãî óìíîæåíèÿ (íóæíà äëÿ ðàáîòû DSP)
ARM7 ñ ïîääåðæêîé îòëàäêè
DR
ARM7DM:
ARM7D ñ óëó÷øåííûì óìíîæåíèåì
ARM7DMI (40 MIPS):
ARM7DM ñ ICEbreaker (âñòðîåííàÿ ïîääåðæêà In Circuit Emulation)
ARM70DM:
ARM7DMI (êàê îòäåëüíàÿ ìèêðîñõåìà)
ARM700 (40 MHz, 36 MIPS):
ARM7 ÿäðî
ARM7500:
4Êá åäèíûé êýø
writeback buffer
âñòðîåííîå MMU
ARM7 ÿäðî
8Êá åäèíûé êýø
writeback buffer
âñòðîåííîå MMU
âñòðîåííûé IOMD
âñòðîåííûé âèäåîïðîöåññîð
87
11. Àðõèòåêòóðû ïðîöåññîðîâ
ARM8 (80 MHz, 80 MIPS):
ñîâìåñòèì ñ ARM6 è ARM7
5-òè ñòàäèéíûé êîíâåéåð
ñïåêóëÿòèâíîå èñïîëíåíèå
T
ARM7Txx:
ARM7xx (xx - îäíî èç ïðèâåäåííûõ âûøå ñî÷åòàíèé) ñ ïîääåðæêîé THUMB ðåæèìà
StrongARM (SA110: 100 MHz, 115 MIPS; 200 MHz, 230 MIPS):
âûñîêîñêîðîñòíîé âàðèàíò ARM ÿäðà, ðàçðàáîòàí ñîâìåñòíî ARM ltd è Digital
16Êá êýø èíñòðóêöèé + 16Êá êýø äàííûõ (Ãàðâàðäñêàÿ àðõèòåêòóðà)
ãëóáîêèé êîíâåéåð
AF
ïîëíàÿ ñîâìåñòèìîñòü êîäà íå ãàðàíòèðóåòñÿ â ñèëó ïîÿâëåíèÿ ãëóáîêîãî êîíâåéåðà è ðàçäåëüíîãî êýøà
AMULET2e (40 MIPS):
ýòî àñèíõðîííàÿ âåðñèÿ ARM6, áîëåå áûñòðàÿ, ÷åì ARM7, íî áîëåå ìåäëåííàÿ,
÷åì ARM8
150 mW â àêòèâíîì ñîñòîÿíèè, 0.1 mW â ñîñòîÿíèè îæèäàíèÿ
ìàëîå ïîòðåáëåíèå ìîùíîñòè è ìåõàíèçì èñïîëüçîâàíèÿ ýíåðãèè äåëàþò
AMULET2e èäåàëüíûì ïðîöåññîðîì äëÿ ïðèëîæåíèé, ãäå ïåðèîäû âûñîêîé âû÷èñëèòåëüíîé íàãðóçêè ñî÷åòàþòñÿ ñ äëèòåëüíûìè ïåðèîäàìè îæèäàíèÿ ââîäà
11.8.3. Ïðîãðàììíàÿ ìîäåëü
Ïðèêëàäíîé ïðîãðàììå äîñòóïíû
16 öåëî÷èñëåííûõ ðåãèñòðîâ îáùåãî íàçíà÷åíèÿ (ÐÎÍ) r0 - r15:
ñîäåðæàò ñëîâî (32 áèò). Íåêîòîðûå èç ýòèõ ðåãèñòðîâ èìåþò ñïåöèàëüíîå íàçíà÷åíèå:
DR
r15 - program counter (pc):
ñîäåðæèò àäðåñ èíñòðóêöèè, íàõîäÿùåéñÿ ÷åðåç äâå èíñòðóêöèè îò èñïîëíÿåìîé â äàííûé ìîìåíò (ò.å. àäðåñ òåêóùåé èíñòðóêöèè + 8; ïðè çàïèñè â
ýòîò ðåãèñòð ïðîèñõîäèò ïåðåõîä ïî çàïèñàííîìó àäðåñó
r14 - link register (lr):
ïîñëå èíñòðóêöèè Branch and Link (BL) (âûçîâ ôóíêöèè) ñîäåðæèò àäðåñ
ñëåäóþùåé èíñòðóêöèè (àäðåñ âîçâðàòà); âî âñåõ îñòàëüíûõ èíñòðóêöèÿõ
ýòî îáû÷íûé ÐÎÍ
Êîäû óñëîâèÿ cc (condition code):
ÿâëÿþòñÿ ÷àñòüþ CPSR (Current Program Status Register), êîòîðûé íå äîñòóïåí ïîëüçîâàòåëüñêîé ïðîãðàììå êàê ðåãèñòð. Êîäû óñëîâèÿ óñòàíàâëèâàþòñÿ ïî ðåçóëüòàòó
àðèôìåòè÷åñêèõ îïåðàöèé (åñëè ýòî óêàçàíî â èíñòðóêöèè) èëè ñïåöèàëüíûìè èíñòðóêöèÿìè è èñïîëüçóþòñÿ äëÿ îïðåäåëåíèÿ òîãî, íóæíî ëè èñïîëíÿòü òåêóùóþ
èíñòðóêöèþ (íàïîìíèì, âñå èíñòðóêöèè ÿâëÿþòñÿ óñëîâíûìè).
Ïîääåðæèâàþòñÿ ñëåäóþùèå ðåæèìû àäðåñàöèè ïàìÿòè.
Äëÿ ÷òåíèÿ/çàïèñè ñëîâà (32 áèò) èëè áåççíàêîâîãî áàéòà:
èìååòñÿ îäèí ðåæèì àäðåñàöèè
áàçîâûé ðåãèñòð ñìåùåíèå
ãäå áàçîâûé ðåãèñòð îäèí èç ÐÎÍ r0 r15, à ñìåùåíèå ìîæåò èìåòü òðè âèäà:
88
êîíñòàíòà 12-áèòíàÿ êîíñòàíòà
11.8. Ïðîöåññîðû ARM
ðåãèñòð îäèí èç ÐÎÍ r0 r15
(ðåãèñòð <îïåðàöèÿ> êîíñòàíòà) ãäå
T
ðåãèñòð îäèí èç ÐÎÍ r0 r15,
<îïåðàöèÿ> îäíà èç ñëåäóþùèõ îïåðàöèé ñäâèãà
LSL:
Logical Shift Left, ñäâèã âëåâî, âäâèãàþòñÿ íóëè
LSR:
Logical Shift Right, ñäâèã âïðàâî, âäâèãàþòñÿ íóëè
ASR:
Arithmetic Shift Right, ñäâèã âïðàâî, âäâèãàåòñÿ çíàêîâûé ðàçðÿä
îïåðàíäà ðåãèñòð
ROR:
ROtate Right, öèêëè÷åñêèé ñäâèã âïðàâî
RRX:
ROtate Right with eXtend öèêëè÷åñêèé ñäâèã âïðàâî 33-õ áèòíîé
âåëè÷èíû (<áèò ïåðåíîñà>, ðåãèñòð) íà 1, ïðàâûé îïåðàíä (ò.å.
êîíñòàíòà) äîëæåí îòñóòñòâîâàòü
êîíñòàíòà 5-áèò êîíñòàíòà, çàäàþùàÿ ÷èñëî ñäâèãîâ
AF
Êàæäûé èç òðåõ âèäîâ ðåæèìà àäðåñàöèè èìååò òðè âàðèàíòà (÷òî äàåò äåâÿòü
ðåæèìîâ àäðåñàöèè):
îáû÷íûé,
àäðåñ åñòü ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ
ñ ïðåèíäåêèðîâàíèåì,
àäðåñ åñòü ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ, åñëè
èíñòðóêöèÿ ÷òåíèÿ/çàïèñè âûïîëíåíà (óäîâëåòâîðåí åå êîä óñëîâèÿ), òî àäðåñ
çàïèñûâàåòñÿ â áàçîâûé ðåãèñòð
ñ ïîñòèíäåêñèðîâàíèåì, àäðåñ åñòü áàçîâûé ðåãèñòð, åñëè èíñòðóêöèÿ ÷òåíèÿ/çàïèñè âûïîëíåíà, òî ñóììà áàçîâîãî ðåãèñòðà è ñìåùåíèÿ çàïèñûâàåòñÿ
â áàçîâûé ðåãèñòð
Äëÿ ÷òåíèÿ/çàïèñè ïîëóñëîâà (16 áèò) èëè ÷òåíèÿ çíàêîâîãî áàéòà:
(åñòü òîëüêî â àðõèòåêòóðå ARM4 è âûøå) èìååòñÿ îäèí ðåæèì àäðåñàöèè
áàçîâûé ðåãèñòð êîíñòàíòà
DR
ãäå áàçîâûé ðåãèñòð îäèí èç ÐÎÍ r0 r15, à êîíñòàíòà 8-áèòíàÿ êîíñòàíòà.
Ýòîò ðåæèìà àäðåñàöèè èìååò òðè âàðèàíòà: îáû÷íûé, ñ ïðåèíäåêèðîâàíèåì
è ñ ïîñòèíäåêñèðîâàíèåì.
Âñå èíñòðóêöèè èìåþò ïîëå êîäà óñëîâèÿ (4 áèòà). Åñëè òåêóùåå ñîñòîÿíèå ôëàãîâ â ðåãèñòðå CPSR ñîâïàäàåò ñ óêàçàííûì â ïîëå êîäà òåêóùåé èíñòðóêöèè, òî îíà áóäåò âûïîëíåíà,
èíà÷å - ïðîïóùåíà.
Âñå èíñòðóêöèè (çà èñêëþ÷åíèåì load/store) èìåþò îïåðàíäû â ðåãèñòðàõ è ïîòîìó ðàçìåð
âñåõ îïåðàíäîâ ðàâåí ðàçìåðó ñëîâà (32 áèò).
Âñå àðèôìåòè÷åñêèå èíñòðóêöèè (âêëþ÷àÿ ëîãè÷åñêèå) èìåþò áèò, ïðè óñòàíîâêå êîòîðîãî ïî ðåçóëüòàòó îïåðàöèè áóäóò âûñòàâëåíû êîäû óñëîâèÿ.
Îòëè÷èòåëüíîé îñîáåííîñòüþ ïðîöåññîðîâ ARM ÿâëÿåòñÿ òî, ÷òî âñå àðèôìåòè÷åñêèå
èíñòðóêöèè (âêëþ÷àÿ ëîãè÷åñêèå) ìîãóò èñïîëüçîâàòü â êà÷åñòâå îäíîãî èç îïåðàíäîâ òàê
íàçûâàåìûé <shifter_operand>, êîòîðûé ìîæåò èìåòü îäíó èç ñëåäóþùèõ ôîðì.
<immediate>:
<shifter_operand> = <immediate>, ãäå <immediate> 32 áèò êîíñòàíòà, â êîòîðîé
òîëüêî â êàêèõ-òî 8-ìè ïîäðÿä èäóùèõ ïîçèöèÿõ ìîãóò áûòü íå íóëè, íîìåð ïåðâîé
ïîçèöèè äîëæåí áûòü ÷åòíûì; êîäèðóåòñÿ â èíñòðóêöèè êàê 8-ìè áèòíàÿ êîíñòàíòà
<8_bit_immediate> è 4-õ áèòíûé ñäâèã <rotate_imm>, ïðè ýòîì <shifter_operand>
= <8_bit_immediate> Rotate_Right (<rotate_imm> * 2)
rA:
<shifter_operand> = rA, ãäå rA îäèí èç ÐÎÍ r0 r15
89
12. Àðõèòåêòóðà ñèñòåìíîé øèíû
T
rA <shift> <shift_imm>:
<shifter_operand> = rA <shift> <shift_imm>, ãäå <shift> åñòü îäíà èç îïåðàöèé
LSL:
Logical Shift Left, ñäâèã âëåâî, âäâèãàþòñÿ íóëè
LSR:
Logical Shift Right, ñäâèã âïðàâî, âäâèãàþòñÿ íóëè
ASR:
Arithmetic Shift Right, ñäâèã âïðàâî, âäâèãàåòñÿ çíàêîâûé ðàçðÿä rA
ROR:
ROtate Right, öèêëè÷åñêèé ñäâèã âïðàâî
RRX:
ROtate Right with eXtend öèêëè÷åñêèé ñäâèã âïðàâî 33-õ áèòíîé âåëè÷èíû (<áèò ïåðåíîñà>, rA) íà 1, ïðàâûé îïåðàíä (ò.å. <shift_imm>) äîëæåí
îòñóòñòâîâàòü
AF
<shift_imm> - 5-òè áèòíàÿ êîíñòàíòà
rA <shift> rB:
<shifter_operand> = rA <shift> rB, ãäå <shift> åñòü îäíà èç îïèñàííûõ âûøå îïåðàöèé, <shift_imm> - 5-òè áèòíàÿ êîíñòàíòà
Îòìåòèì, ÷òî ïðè èñïîëüçîâàíèè ïîñëåäíåé ôîðìû <shifter_operand> òðåõîïåðàíäíàÿ àðèôìåòè÷åñêàÿ èíñòðóêöèÿ ðåàëüíî èñïîëüçóåò 4 ðåãèñòðà.
12. Àðõèòåêòóðà ñèñòåìíîé øèíû
Ñèñòåìíàÿ øèíà îáåñïå÷èâàåò âçàèìîäåéñòâèå ïðîöåññîðà è ïåðèôåðèéíûõ óñòðîéñòâ.
Ïîñêîëüêó ÷àñòî îñíîâíîé çàäà÷åé ñèñòåìû ðåàëüíîãî âðåìåíè ÿâëÿåòñÿ óïðàâëåíèå òåì
èëè èíûì îáîðóäîâàíèåì, òî êà÷åñòâó ñèñòåìíîé øèíû äëÿ ïðîìûøëåííûõ êîìïüþòåðîâ
óäåëÿåòñÿ ïîâûøåííîå âíèìàíèå.
 íàñòîëüíûõ êîìïüþòåðàõ è ïðîìûøëåííûõ ñèñòåìàõ ðàñïðîñòðàíåíû ñëåäóþùèå ñèñòåìíûå øèíû.
Ñðàâíåíèå ñèñòåìíûõ øèí
Íàçâàíèå øèíû
DR
PC/XT (8 áèò)
PC/AT (16 áèò)
MULTIBUS 1
EISA
VME32
MCA32
MULTIBUS 2
VME64
NUBUS
PCI32
VLB32
MCA64
AUTOBAHN 1
PCI64
AUTOBAHN 2
PCI64-66
FUTUREBUS+
Ïðîèçâîäèòåëüíîñòü Ìá/ñ
4.7
16.66
24
33
40
33
70
80
80
132
135
160
200
264
400
528
1000
Îòìåòèì, ÷òî ïðè âûáîðå øèíû ÷àñòî ïðèõîäèòñÿ ðóêîâîäñòâîâàòüñÿ íå òîëüêî åå ïðîèçâîäèòåëüíîñòüþ, à è òàêèìè ôàêòîðàìè, êàê íàëè÷èå ïåðèôåðèéíîãî îáîðóäîâàíèÿ äëÿ íåå,
âîçìîæíîñòü ãîðÿ÷åé (ò.å. áåç âûêëþ÷åíèÿ êîìïüþòåðà) çàìåíû îáîðóäîâàíèÿ íà øèíå è
ò.ä. Ìû ðàññìîòðèì ãîñïîäñòâóþùóþ â íàñòîÿùåå âðåìÿ ñðåäè ïðîìûøëåííûõ ñèñòåì øèíó
VME, à òàêæå ïðèîáðåòàþùóþ âñå áîëüøóþ ïîïóëÿðíîñòü øèíó PCI.
90
12.1. Àðõèòåêòóðà øèíû VME
12.1. Àðõèòåêòóðà øèíû VME
VME ÿâëÿåòñÿ àñèíõðîííîé øèíîé.
VME èñïîëüçóåò èäåþ ïîëíîãî îòîáðàæåíèÿ íà ïàìÿòü. Êàæäîå óñòðîéñòâî ïðåäñòàâëÿåòñÿ êàê àäðåñ ïàìÿòè èëè ãðóïïà àäðåñîâ.
VME èìååò ðàçäåëüíûå øèíû àäðåñà è äàííûõ. Ïëàòà îäèíàðíîé âûñîòû èìååò 24áèòíóþ øèíó àäðåñà è 16-òè áèòíóþ øèíó äàííûõ, ïëàòà äâîéíîé âûñîòû 32-áèòíûå
øèíû àäðåñà è äàííûõ.
Âîçìîæíîñòü áëî÷íûõ ïåðåñûëîê, êîãäà àäðåñ çàäàåòñÿ òîëüêî îäèí ðàç.
Ïîääåðæêà ìóëüòèïðîöåññîðíîñòè:
ïðèîðèòåòíûé äîñòóï ê ðàçäåëÿåìûì ðåñóðñàì
âîçìîæíîñòü ïàðàëëåëüíîãî èëè èñêëþ÷èòåëüíîãî äîñòóïà ê ðàçäåëÿåìûì ðåñóðñàì
4 óðîâíÿ äîñòóïà
ñòðóêòóðà äîñòóïà master/slave
çàùèòà ðàçäåëÿåìûõ ðåñóðñîâ ïîñðåäñòâîì íåäåëèìûõ öèêëîâ øèíû
DR
AF
T
Ñòàíäàðò íà øèíó VME ïîÿâèëñÿ â 1981ã., êîãäà ôèðìû Motorola, Mostek è Signetics äîãîâîðèëèñü îá åäèíîì ñòàíäàðòå íà øèíó äëÿ ïðîìûøëåííûõ ñèñòåì.  îñíîâó ýëåêòðè÷åñêîé
ñïåöèôèêàöèè øèíû áûë ïîëîæåí ñòàíäàðò íà øèíó VERSAbus ôèðìû Motorola, à â îñíîâó
ìåõàíè÷åñêîé ñïåöèôèêàöèè ñòàíäàðò Eurocard êîíñîðöèóìà åâðîïåéñêèõ êîìïàíèé. Íîâûé ñòàíäàðò áûë íàçâàí VERSAmodule Eurocard, ñîêðàùåííî VME. Îäíàêî, âñå êîìïàíèè,
êðîìå Motorola, îòêàçàëèñü ðàñøèôðîâûâàòü VME êàê VERSAmodule Eurocard, ïîñêîëüêó
VERSAmodule ÿâëÿåòñÿ çàðåãèñòðèðîâàííîé òîðãîâîé ìàðêîé Motorola. Ïîýòîìó â íàñòîÿùåå âðåìÿ ñ÷èòàåòñÿ, ÷òî òåðìèí VME ÿâëÿåòñÿ åäèíûì îáîçíà÷åíèåì, à íå àááðåâèàòóðîé.
Íà øèíó VME ñóùåñòâóåò ñòàíäàðò IEEE 1014-1987.
Ïëàòà øèíû VME ìîæåò áûòü îäèíàðíîé èëè äâîéíîé âûñîòû. Ïëàòà îäèíàðíîé âûñîòû
(èëè 3U) èìååò ðàçìåðû 100ìì 160ìì è îäèí 96 êîíòàêòíûé ðàçüåì DIN 41612, íàçûâàåìûé
P1. Ïëàòà äâîéíîé âûñîòû (èëè 6U) èìååò ðàçìåðû 233ìì 160ìì è âòîðîé 96 êîíòàêòíûé
ðàçüåì DIN 41612, íàçûâàåìûé P2. Ëèöåâàÿ ñòîðîíà ïëàòû èìååò øèðèíó 20ìì. Ïëàòû ðàçíîãî ðàçìåðà ìîãóò ðàáîòàòü ñîâìåñòíî â îäíîé ñèñòåìå.
Íà øèíå VME ìîæåò áûòü äî 21 ðàçúåìà. Ïèòàíèå íà ïëàòû ïîäàåòñÿ ÷åðåç ðàçúåìû
øèíû.
Îñíîâíûå õàðàêòåðèñòèêè øèíû.
7 óðîâíåé çàïðîñà ïðåðûâàíèé
Òèïè÷íûé îáìåí ïî øèíå ñîñòîèò èç öèêëà àðòáèòðàæà (äëÿ ïîëó÷åíèÿ äîñòóïà ê øèíå),
àäðåñíîãî öèêëà (äëÿ âûáîðêè óñòðîéñòâà), öèêëà ðåàëüíîãî îáìåíà äàííûìè.
Øèíà VME êàê áû ñîñòîèò èç 4-õ ïîäøèí.
1. Øèíà àðáèòðàæà îòâå÷àåò çà îïðåäåëåíèå ïðèîðèòåòà çàïðîñà è ðàçäåëåíèå øèíû.
 êà÷åñòâå àðáèòðà âûñòóïàåò ïëàòà, íàõîäÿùàÿñÿ â ðàçúåìå 1 øèíû VME.
2. Øèíà îáìåíà äàííûìè âêëþ÷àåò
øèíó äàííûõ, ïî êîòîðîé âîçìîæíû îáìåíû ðàçìåðîì 8/16/32 áèò
øèíó àäðåñà, ïî êîòîðîé âîçìîæíû îáìåíû ðàçìåðîì 16/24/32 áèò
óïðàâëÿþùóþ øèíó, ïî êîòîðîé ïåðåäàþòñÿ ðàçìåðû àäðåñà è äàííûõ, òèï îáìåíà
(÷òåíèå èëè çàïèñü), ïðèçíàê îêîí÷àíèÿ îáìåíà, ïðèçíàê îøèáêè è ò.ä.
91
12. Àðõèòåêòóðà ñèñòåìíîé øèíû
T
3. Øèíà óïðàâëåíèÿ ïðåðûâàíèÿìè îòâå÷àåò çà ïðèîðèòåòíîå óïðàâëåíèå ïðåðûâàíèÿìè
4. Ñëóæåáíàÿ øèíà îòâå÷àåò çà ïîäà÷ó íàïðÿæåíèé ïèòàíèÿ +5Â, -12Â, +12 íà ïëàòû,
èíôîðìèðîâàíèå ïîñëåäíèõ î ïðîáëåìàõ ñ ïèòàíèåì, ïîäà÷ó ïåðèîäè÷åñêîãî ñèãíàëà,
èíèöèàëèçàöèþ è ñáðîñ øèíû.
AF
Áëî÷íûé ðåæèì ïîçâîëÿåò ïåðåäàòü äî 256 áàéòîâ ïî øèíå äàííûõ, îäíîêðàòíî çàäàâ
àäðåñ íà øèíå àäðåñà. Ñëåäîâàòåëüíî, øèíà àäðåñà íåèñïîëüçóåòñÿ áîëüøóþ ÷àñòü âðåìåíè
îáìåíà. Ñòàíäàðò VME64 îïðåäåëÿåò 64-áèòíûå ïåðåäà÷è çà ñ÷åò íå èñïîëüçóåìîé øèíû
àäðåñà: ìëàäøàÿ ÷àñòü 64-áèòíîãî áëîêà ïåðåäàåòñÿ ïî øèíå äàííûõ, à ñòàðøàÿ ÷àñòü ïî
ïðîñòàèâàþùåé øèíå àäðåñà.
12.2. Àðõèòåêòóðà øèíû PCI
Øèíà PCI (Peripheral Components Interconnect) ïîÿâèëàñü êàê ñòàíäàðò ôèðìû Intel íà
ñîåäèíåíèå ëîêàëüíîé øèíû ïðîöåññîðà (ñîåäèíÿþùåé åãî ñ ïàìÿòüþ) è ïåðèôåðèéíûõ
óñòðîéñòâ. Â 1992ã. ïîÿâèëàñü âåðñèÿ 1 ñòàíäàðòà, à â 1993ã. âåðñèÿ 2. Â 1995ã. ïîÿâèëñÿ ñòàíäàðò íà ðàñøèðåíèå PCI-66MHz.
Îñíîâíûå õàðàêòåðèñòèêè øèíû.
PCI ÿâëÿåòñÿ ñèíõðîííîé øèíîé, ÷àñòîòà ñèíõðîíèçàöèè 33MHz èëè 66 MHz.
PCI èñïîëüçóåò òðè àäðåñíûõ ïðîñòðàíñòâà:
1. ïðîñòðàíñòâî ïàìÿòè
2. ïðîñòðàíñòâî ââîäà/âûâîäà
3. ïðîñòðàíñòâî ðåãèñòðîâ êîíôèãóðàöèè
PCI èìååò ìóëüòèïëåêñèðîâàííóþ øèíó àäðåñà è äàííûõ ðàçìåðîì 32 áèò èëè 64 áèò.
Âîçìîæíîñòü ïîäêëþ÷åíèÿ äî 256 øèí PCI
Ïàðàëëåëüíàÿ ðàáîòà ðàçëè÷íûõ øèí
Áóôåðèçàöèÿ îáìåíîâ
DR
92
Ïðîòîêîë êîíôèãóðàöèè óñòðîéñòâ
Ïðåäìåòíûé óêàçàòåëü (ðóññêèé)
îáúåêòíî-îðèåíòèðîâàííîñòü . . . . . . . . . . . 22
î÷åðåäü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ïðèîðèòåòíàÿ . . . . . . . . . . . . . . . . . . . . . . .21
ñîîáùåíèé . . . . . . . . . . . . . . . . . . . . . . . . . . 20
çàäà÷ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ïàìÿòü
äèíàìè÷åñêàÿ . . . . . . . . . . . . . . . . . . . . . . . .8
ôëåø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
îïåðàòèâíàÿ . . . . . . . . . . . . . . . . . . . . . . . . . 8
ïîñòîÿííàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ñòàòè÷åñêàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . 8
âèðòóàëüíàÿ . . . . . . . . . . . . . . . . . . . . . . . . 11
ïëàíèðîâùèê çàäà÷ . . . . . . . . . . . . . . . . . . . . . 38
ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . . . . . . . . 31
ïîëèíã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ïîòîê. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
ïðåðûâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
îòëîæåííîå . . . . . . . . . . . . . . . . . . . . . . . . . 15
óðîâåíü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
âðåìÿ ðåàêöèè . . . . . . . . . . . . . . . . . . . . . . . 7
ïðèîðèòåò . . . . . . . . . . . . . . . . . . . . . . . . . . . 12, 38
ôèêñèðîâàííûé . . . . . . . . . . . . . . . . . . . . 38
òóðíèðíûé . . . . . . . . . . . . . . . . . . . . . . . . . 38
round robin . . . . . . . . . . . . . . . . . . . . . . . . . 38
ïðîöåññ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
áëîêèðîâêà . . . . . . . . . . . . . . . . . . . . . . . . . 15
ãîëîäîâêà . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
êîíêóðèðóþùèé . . . . . . . . . . . . . . . . . . . . 15
ïàðàëëåëüíûé . . . . . . . . . . . . . . . . . . . . . . 12
ñîñòîÿíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ñîòðóäíè÷àþùèé . . . . . . . . . . . . . . . . . . . 15
òóïèê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
âçàèìîäåéñòâèå . . . . . . . . . . . . . . . . . . . . . 11
ïî÷òîâûå ÿùèêè . . . . . . . . . . . . . . . . . 11
ðàçäåëÿåìàÿ ïàìÿòü . . . . . . . . . . . . . 11
ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . 11
ñèãíàëû . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ïðîöåññîð . . . . . . . . . . . . . . . . . . . . . . . . . . . 10, 56
êîíâåéåðíûé. . . . . . . . . . . . . . . . . . . . . . . .58
ñóïåðêîíâåéåðíûé . . . . . . . . . . . . . . . . . . 59
ñóïåðñêàëÿðíûé . . . . . . . . . . . . . . . . . . . . 59
CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
RISC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
ïðîãðàììà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ðåñóðñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
àêòèâíûé . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
àïïàðàòíûé . . . . . . . . . . . . . . . . . . . . . . . . 13
ëîêàëüíûé . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ïàññèâíûé . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ïîñòîÿííûé . . . . . . . . . . . . . . . . . . . . . . . . . 14
DR
AF
ÀÖÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ÀÑÓÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
ÀÑÓÒÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
ÖÀÏ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ÎÑÐÂ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ñèëüíàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ñëàáàÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
host/target . . . . . . . . . . . . . . . . . . . . . . . . . . 43
self-hosted. . . . . . . . . . . . . . . . . . . . . . . . . . .42
ÎÇÓ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ôëåø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ñòàòè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ÏÇÓ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Ñòàíäàðò POSIX 1003.1 . . . . . . . . . . . . . . 6, 17
Âçàèìíîå èñêëþ÷åíèå . . . . . . . . . . . . . . . . . . 15
àáñòðàêòíûé òèï äàííûõ . . . . . . . . . . . . . . . 23
äèñïåò÷åð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
èíêàïñóëÿöèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
èíâåðñèÿ ïðèîðèòåòîâ . . . . . . . . . . . . . . . . . . 39
èñêëþ÷åíèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
àñèíõðîííûå. . . . . . . . . . . . . . . . . . . . . . . .20
ñèíõðîííûå . . . . . . . . . . . . . . . . . . . . . . . . . 20
êýø . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Ãàðâàðäñêèé . . . . . . . . . . . . . . . . . . . . . . . . 61
åäèíûé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
ïåðâîãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . . 62
ñ îáðàòíîé çàïèñüþ . . . . . . . . . . . . . . . . 62
ñ ïðÿìîé çàïèñüþ . . . . . . . . . . . . . . . . . . 62
òðåòüåãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . 62
âòîðîãî óðîâíÿ . . . . . . . . . . . . . . . . . . . . . 62
êëàññ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
äî÷åðíèé . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
íàñëåäîâàíèå . . . . . . . . . . . . . . . . . . . . . . . 24
ïîäêëàññ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ïîòîìîê . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ïðåäîê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ïðåäñòàâèòåëü . . . . . . . . . . . . . . . . . . . . . . 23
ðîäèòåëüñêèé . . . . . . . . . . . . . . . . . . . . . . . 24
ñîâìåñòèìûé . . . . . . . . . . . . . . . . . . . . . . . 24
êëèåíòñåðâåð . . . . . . . . . . . . . . . . . . . . . . 30, 31
êîíòåêñò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
êðèòè÷åñêàÿ ñåêöèÿ . . . . . . . . . . . . . . . . . . . . . 15
ìåæïðîöåññíîå âçàèìîäåéñòâèå . . . . . . . . . 11
ìîäåëü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
íèòü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
îáúåêò . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
àãðåãàòíûé . . . . . . . . . . . . . . . . . . . . . . . . . 22
àòðèáóòû . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
÷àñòè . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ïîâåäåíèå . . . . . . . . . . . . . . . . . . . . . . . . . . .22
T
Ïðåäìåòíûé óêàçàòåëü (ðóññêèé)
93
DR
AF
ïðîãðàììíûé . . . . . . . . . . . . . . . . . . . . . . . 13
ðàçäåëÿåìûé . . . . . . . . . . . . . . . . . . . . . . . 14
êðèòè÷íûé . . . . . . . . . . . . . . . . . . . . . . . 14
íå êðèòè÷íûé . . . . . . . . . . . . . . . . . . . . 14
âðåìåííûé . . . . . . . . . . . . . . . . . . . . . . . . . .14
ñåìàôîðû . . . . . . . . . . . . . . . . . . . . . . . . . . . 20, 28
äâîè÷íûå . . . . . . . . . . . . . . . . . . . . . . . 21, 28
ëè÷íûå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
ñ÷åòíûå . . . . . . . . . . . . . . . . . . . . . . . . . 21, 28
ñîáûòèå. . . . . . . . . . . . . . . . . . . . . . . . . .11, 20, 30
ñòåê . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ñâÿçûâàíèå . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
äèíàìè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . 12
ñòàòè÷åñêîå . . . . . . . . . . . . . . . . . . . . . . . . . 12
òàéìåð . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
òèï . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
âèðòóàëüíàÿ ïàìÿòü . . . . . . . . . . . . . . . . . . . . 11
çàäà÷à . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
T
Ïðåäìåòíûé óêàçàòåëü (ðóññêèé)
94
Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé)
DRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
ESSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hyperkernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
AF
ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ARM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9, 85
AMULET2e . . . . . . . . . . . . . . . . . . . . . . . . . 88
ARM1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM600 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM700 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM70DM . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM7500 . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM7D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM7DM. . . . . . . . . . . . . . . . . . . . . . . . . . .87
ARM7DMI . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ARM7Txx . . . . . . . . . . . . . . . . . . . . . . . . . . 88
ARM8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
StrongARM . . . . . . . . . . . . . . . . . . . . . . . . . 88
THUMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
T
Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé)
big-endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
BU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
burst access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61
DR
cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
BTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Harvard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
L1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
L2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
L3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
unified . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
write-back. . . . . . . . . . . . . . . . . . . . . . . . . . .62
write-through . . . . . . . . . . . . . . . . . . . . . . . 62
CAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
CHORUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 43
CHRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
CISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Compact PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Component Integrator . . . . . . . . . . . . . . . . . . . 54
DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
delay slots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
DIMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
dispatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 84
DPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Intel 80960x . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 82
i80960Cx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
i80960Hx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
i80960Jx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
i80960Kx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
i80960RP . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
i80960Sx . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Intel 80x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 71
i80386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
i80387 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
i80486 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
i82385 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
P7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Pentium . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Pentium Pro . . . . . . . . . . . . . . . . . . . . . . . . 73
Pentium-II . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Pentium-II Xeon . . . . . . . . . . . . . . . . . . . . 73
Pentium-III . . . . . . . . . . . . . . . . . . . . . . . . . 73
Pentium-III Xeon . . . . . . . . . . . . . . . . . . . 73
IRQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
ISR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
IU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
linkage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
little-endian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
lockout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
LP RT-Technology . . . . . . . . . . . . . . . . . . . . . . 53
LRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Lynx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
LynxOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
MMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Motorola 68xxx . . . . . . . . . . . . . . . . . . . . . . . 9, 67
M68000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
M68010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
M68020 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
M68030 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
M68040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
95
Ïðåäìåòíûé óêàçàòåëü (àíãëèéñêèé)
SCEPTRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
SDRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
SIMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
SMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38, 64
snooping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
SoftKernel . . . . . . . . . . . . . . . . . . . . . . . 25, 26, 49
SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 79
MICROSPARC-II . . . . . . . . . . . . . . . . . . . 80
SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
SuperSPARC-II . . . . . . . . . . . . . . . . . . . . . 80
UltraSPARC-II . . . . . . . . . . . . . . . . . . . . . 80
speculative execution . . . . . . . . . . . . . . . . . . . . 60
SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
starvation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
AF
OEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
OS-9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39, 45
host/target . . . . . . . . . . . . . . . . . . . . . . . . . . 43
self-hosted. . . . . . . . . . . . . . . . . . . . . . . . . . .42
soft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
T
M68060 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
M68302 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
M68360 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
MC68851. . . . . . . . . . . . . . . . . . . . . . . . . . . .69
MC68881. . . . . . . . . . . . . . . . . . . . . . . . . . . .69
MC68882. . . . . . . . . . . . . . . . . . . . . . . . . . . .69
QUICC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
mutex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
mutual exclusion . . . . . . . . . . . . . . . . . . . . . . . . . 15
DR
PCI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92
polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 17
1003.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6, 17
1003.1ñ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1003.1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1003.1d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1003.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1003.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
PowerPC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9, 75
PowerPC 403 . . . . . . . . . . . . . . . . . . . . . . . 77
PowerPC 500 . . . . . . . . . . . . . . . . . . . . . . . 77
PowerPC 603 . . . . . . . . . . . . . . . . . . . . . . . 76
PowerPC 603e . . . . . . . . . . . . . . . . . . . . . . 76
PowerPC 604 . . . . . . . . . . . . . . . . . . . . . . . 76
PowerPC 604e . . . . . . . . . . . . . . . . . . . . . . 77
PowerPC 620 . . . . . . . . . . . . . . . . . . . . . . . 77
PowerPC G3 . . . . . . . . . . . . . . . . . . . . . . . . 77
PowerPC G4 . . . . . . . . . . . . . . . . . . . . . . . . 77
PowerQUICC . . . . . . . . . . . . . . . . . . . . . . . 77
QUICC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
preemption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
pSOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 46
QNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 18, 45
RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Realtime ETS Kernel . . . . . . . . . . . . . . . . . . . . 53
RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
RMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
round robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
RRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
RT-Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
RTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
hard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
96
thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
TLB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62, 63
UISA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
VEA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
VITA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
VME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 91
VRTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
VRTX32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
VxWorks . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 18, 48
Willows RT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Download