1 |
|
---|
2 | ï¼ JSPã«ã¼ãã« è¨è¨ã¡ã¢ ï¼
|
---|
3 |
|
---|
4 | ï¼Release 1.4対å¿ï¼æçµæ´æ°: 15-Mar-2005ï¼
|
---|
5 |
|
---|
6 | ------------------------------------------------------------------------
|
---|
7 | TOPPERS/JSP Kernel
|
---|
8 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
9 | Just Standard Profile Kernel
|
---|
10 |
|
---|
11 | Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
|
---|
12 | Toyohashi Univ. of Technology, JAPAN
|
---|
13 |
|
---|
14 | ä¸è¨è使¨©è
|
---|
15 | ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãï¼Free Software Foundation
|
---|
16 | ã«ãã£ã¦å
|
---|
17 | ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨
|
---|
18 | è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢
|
---|
19 | ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
20 | å¸ï¼ä»¥ä¸ï¼
|
---|
21 | å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
22 | (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
23 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
24 | ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
25 | (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
26 | ç¨ã§ããå½¢ã§åé
|
---|
27 | å¸ããå ´åã«ã¯ï¼åé
|
---|
28 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨
|
---|
29 | è
|
---|
30 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
|
---|
31 | ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
32 | (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
33 | ç¨ã§ããªãå½¢ã§åé
|
---|
34 | å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
|
---|
35 | ã¨ï¼
|
---|
36 | (a) åé
|
---|
37 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
38 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
|
---|
39 | 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
40 | (b) åé
|
---|
41 | å¸ã®å½¢æ
|
---|
42 | ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã«
|
---|
43 | å ±åãããã¨ï¼
|
---|
44 | (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
45 | 害ãããï¼ä¸è¨è使¨©è
|
---|
46 | ããã³TOPPERSããã¸ã§ã¯ããå
|
---|
47 | 責ãããã¨ï¼
|
---|
48 |
|
---|
49 | æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è
|
---|
50 | ã
|
---|
51 | ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã
|
---|
52 | å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´
|
---|
53 | æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
54 |
|
---|
55 | @(#) $Id: design.txt,v 1.11 2005/08/08 11:20:06 hiro Exp $
|
---|
56 | ------------------------------------------------------------------------
|
---|
57 |
|
---|
58 |
|
---|
59 | ï¼ï¼JSPã«ã¼ãã«ã«ãããå¶éäºé
|
---|
60 |
|
---|
61 |
|
---|
62 | (1) ãµãã¼ãããæ©è½
|
---|
63 |
|
---|
64 | JSPã«ã¼ãã«ã¯ï¼ååã®éãã¹ã¿ã³ãã¼ããããã¡ã¤ã«ã«å«ã¾ããæ©è½ã®ã¿ã
|
---|
65 | ãµãã¼ãããï¼ã¹ã¿ã³ãã¼ããããã¡ã¤ã«å¤ã®æ©è½ã¯ï¼ååã¨ãã¦ãµãã¼ãã
|
---|
66 | ãªãï¼
|
---|
67 |
|
---|
68 | å
|
---|
69 | 鍿§é ã®è¨è¨ã«ããã£ã¦ã¯ï¼ã¹ã¿ã³ãã¼ããããã¡ã¤ã«å¤ã®æ©è½ããµãã¼ã
|
---|
70 | ããããã®æ¡å¼µæ§ã¯èæ
|
---|
71 | ®ããï¼ã¹ã¿ã³ãã¼ããããã¡ã¤ã«ã«å«ã¾ããæ©è½ãå¹
|
---|
72 | çè¯ãå®ç¾ãããã¨ãç®æãï¼
|
---|
73 |
|
---|
74 | (2) ãµã¼ãã¹ã³ã¼ã«å
|
---|
75 | ã§ã®å²è¾¼ã¿ã®æ±ã
|
---|
76 |
|
---|
77 | JSPã«ã¼ãã«ã§ã¯ï¼ãµã¼ãã¹ã³ã¼ã«ã¯ãã¹ã¦å²è¾¼ã¿ç¦æ¢ã§å®è¡ããï¼ã¹ã¿ã³ãã¼
|
---|
78 | ããããã¡ã¤ã«ã®æ©è½ã®ç¯å²å
|
---|
79 | ã§ã¯ï¼ãã®æ¹æ³ã§ååã¨èãããããï¼æ¡å¼µæ©
|
---|
80 | è½ã追å ããæã«ã¯è¨è¨ãè¦ç´ãã¹ãã§ããï¼å
|
---|
81 | ·ä½çã«ã¯ï¼éã¿ã¹ã¯ã³ã³ãã
|
---|
82 | ã¹ãããå¼ã³åºããããµã¼ãã¹ã³ã¼ã«ãé
|
---|
83 | å»¶å®è¡ããæ¹æ³ãæåã§ããï¼
|
---|
84 |
|
---|
85 | (3) CPUä¾å¤ãã³ãã©ã®å®è¡ã³ã³ããã¹ã
|
---|
86 |
|
---|
87 | JSPã«ã¼ãã«ã§ã¯ï¼CPUä¾å¤ãã³ãã©ã¯éã¿ã¹ã¯ã³ã³ããã¹ãã§å®è¡ããï¼
|
---|
88 |
|
---|
89 | åè: μITRON4.0仿§ã§ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã§çºçããCPUä¾å¤ã«å¯¾ãã
|
---|
90 | CPUä¾å¤ãã³ãã©ãï¼ã¿ã¹ã¯ã³ã³ããã¹ãã§å®è¡ãããéã¿ã¹ã¯ã³ã³ããã¹ã
|
---|
91 | ã§å®è¡ãããã¯ï¼å®è£
|
---|
92 | å®ç¾©ã¨ãã¦ããï¼
|
---|
93 |
|
---|
94 |
|
---|
95 | ï¼ï¼å®è¡ã³ã³ããã¹ãã¨ã·ã¹ãã ç¶æ
|
---|
96 | ã®ä»®æ³å
|
---|
97 |
|
---|
98 | (1) å®è¡ã³ã³ããã¹ã
|
---|
99 |
|
---|
100 | å®è¡ã³ã³ããã¹ãã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ãã®ãããã
|
---|
101 | ã«åé¡ãããï¼
|
---|
102 |
|
---|
103 | å®è¡ã³ã³ããã¹ãã®ç®¡çã¯ã¿ã¼ã²ããä¾åé¨ã§è¡ãï¼å
|
---|
104 | ·ä½çã«ã¯ï¼ã¿ã¹ã¯ã³ã³
|
---|
105 | ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ããå¤å¥ãã颿°ï¼sense_contextï¼ãï¼ã¿ã¼
|
---|
106 | ã²ããä¾åé¨ã§ç¨æããï¼
|
---|
107 |
|
---|
108 | ã¾ãï¼ã¿ã¹ã¯ã³ã³ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ãã®éã®é·ç§»ãï¼ã¿ã¼ã²ãã
|
---|
109 | ä¾åé¨ã®è²¬ä»»ã§ããï¼å
|
---|
110 | ·ä½çã«ã¯ï¼å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ãèµ·å
|
---|
111 | ãããã¨éã¿ã¹ã¯ã³ã³ããã¹ãã«åãæããï¼å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³
|
---|
112 | ãã©ãããªã¿ã¼ã³ããã¨å
|
---|
113 | ã®å®è¡ã³ã³ããã¹ãã«æ»ãããï¼ã¿ã¼ã²ããä¾åé¨
|
---|
114 | ãå®è£
|
---|
115 | ããï¼
|
---|
116 |
|
---|
117 | (2) CPUããã¯ç¶æ
|
---|
118 |
|
---|
119 |
|
---|
120 | ã·ã¹ãã ã¯ï¼CPUããã¯ç¶æ
|
---|
121 | ãï¼CPUããã¯è§£é¤ç¶æ
|
---|
122 | ã®ããããã«ããï¼CPUãã
|
---|
123 | ã¯ç¶æ
|
---|
124 | ã§ã¯ï¼ãã¹ã¦ã®å²è¾¼ã¿ï¼ã«ã¼ãã«ã®ç®¡çå¤ã®ãã®ãé¤ãï¼ä»¥ä¸åãï¼ã
|
---|
125 | ç¦æ¢ããã¦ããï¼
|
---|
126 |
|
---|
127 | CPUããã¯ç¶æ
|
---|
128 | ã®ç®¡çã¯ã¿ã¼ã²ããä¾åé¨ã§è¡ãï¼å
|
---|
129 | ·ä½çã«ã¯ï¼CPUããã¯ç¶æ
|
---|
130 | ï¼
|
---|
131 | CPUããã¯è§£é¤ç¶æ
|
---|
132 | ã®ãããã®ç¶æ
|
---|
133 | ã§ããããå¤å¥ãã颿°ï¼sense_lockï¼
|
---|
134 | t_sense_lockï¼i_sense_lockï¼ã¨ï¼CPUããã¯ç¶æ
|
---|
135 | ã¨CPUããã¯è§£é¤ç¶æ
|
---|
136 | ã®éã
|
---|
137 | é·ç§»ããã颿°ï¼t_lock_cpuï¼t_unlock_cpuï¼i_lock_cpuï¼i_unlock_cpuï¼ãï¼
|
---|
138 | ã¿ã¼ã²ããä¾åé¨ã§ç¨æããï¼ãããã®é¢æ°ãå¼ã³åºã以å¤ã®æ¹æ³ã§ï¼CPUãã
|
---|
139 | ã¯ç¶æ
|
---|
140 | ã¨CPUããã¯è§£é¤ç¶æ
|
---|
141 | ã®éãé·ç§»ãããã¨ã¯ãªãï¼
|
---|
142 |
|
---|
143 |
|
---|
144 | ï¼ï¼ãã£ã¹ãããã¨ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³èµ·åã®æ¹æ³
|
---|
145 |
|
---|
146 | (1) ãã£ã¹ããããå¿
|
---|
147 | è¦ãªã¿ã¤ãã³ã°
|
---|
148 |
|
---|
149 | ãã£ã¹ããããè¡ãå¿
|
---|
150 | è¦ãããã®ã¯ï¼ä»¥ä¸ã®ã¿ã¤ãã³ã°ã§ããï¼
|
---|
151 |
|
---|
152 | (a) ãµã¼ãã¹ã³ã¼ã«å
|
---|
153 | ã§ã®æç¤ºçãªã¿ã¹ã¯ãã£ã¹ãããè¦æ±
|
---|
154 |
|
---|
155 | ã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã³åºããããµã¼ãã¹ã³ã¼ã«å¦çã«ããã¦ï¼æç¤ºçã«
|
---|
156 | ã¿ã¹ã¯ãã£ã¹ããããè¦æ±ãããå ´åï¼å
|
---|
157 | ·ä½çã«ã¯ï¼å®è¡ç¶æ
|
---|
158 | ã®ã¿ã¹ã¯ããã
|
---|
159 | åªå
|
---|
160 | é ä½ã®é«ãå®è¡ã§ããç¶æ
|
---|
161 | ã®ã¿ã¹ã¯ãçããå ´åã¨ï¼å®è¡ç¶æ
|
---|
162 | ã®ã¿ã¹ã¯
|
---|
163 | ï¼èªã¿ã¹ã¯ï¼ãå¾
|
---|
164 | ã¡ç¶æ
|
---|
165 | ã«ããå ´åãããï¼ãããã®å ´åã«ãï¼ãµã¼ãã¹ã³ã¼
|
---|
166 | ã«å¦çå
|
---|
167 | ã§ãã£ã¹ãããã£ãæç¤ºçã«å¼ã³åºããã¨ã§ï¼ãã£ã¹ããããè¡ãï¼
|
---|
168 |
|
---|
169 | (b) å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®åºå£
|
---|
170 |
|
---|
171 | å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ï¼ä»¥ä¸ï¼ãã³ãã©ã¨ç·ç§°ããï¼ããå¼ã³åº
|
---|
172 | ããããµã¼ãã¹ã³ã¼ã«ã§ã¿ã¹ã¯ãã£ã¹ããããè¦æ±ãããå ´åï¼ãã³ãã©ã®åº
|
---|
173 | å£ã§ã¿ã¹ã¯ãã£ã¹ããããå¿
|
---|
174 | è¦ããã§ãã¯ãï¼å¿
|
---|
175 | è¦ã§ããã°ã¿ã¹ã¯ãã£ã¹ãã
|
---|
176 | ããè¡ãï¼ãã³ãã©ãå¤éã«èµ·åããã¦ããå ´åï¼æãå¤å´ã®ãã³ãã©ã®åºå£
|
---|
177 | ã§ã®ã¿è¡ãï¼â»ï¼ï¼
|
---|
178 |
|
---|
179 | â» ããã»ããµã«ãã£ã¦ã¯ï¼CPUä¾å¤ãã³ãã©ã®å
|
---|
180 | ¥å£å¦çã®å
|
---|
181 | é ã§ã¯ï¼éã¿ã¹ã¯
|
---|
182 | ã³ã³ããã¹ãã§ããã¨èªèãããããªãå ´åãããï¼ãã®ãããªå ´åï¼å
|
---|
183 | ¥å£å¦
|
---|
184 | çã®éä¸ã§ãã³ãã©ãå¤éã«èµ·åããã¦ãï¼å
|
---|
185 | å´ã®ãã³ãã©ã§ããã«å¤å´ã®ã
|
---|
186 | ã³ãã©ããããã¨ãèªèã§ããï¼å
|
---|
187 | å´ã®ãã³ãã©ã§ã¿ã¹ã¯ãã£ã¹ããããè¡ã
|
---|
188 | ãã¨ã«ãªãï¼ãã®å ´åã§ãï¼å
|
---|
189 | ¥å£å¦çã®éã¿ã¹ã¯ã³ã³ããã¹ãã§ããã¨èªèã
|
---|
190 | ããªãé¨åã¯ï¼ãã³ãã©ã®ä¸é¨ã§ã¯ãªãã¨è§£éããã°ï¼ä¸è¨ã®ååã¯å®ããã¦
|
---|
191 | ãããã¨ã«ãªãï¼ãã®æ³¨è¨ã¯ï¼ä»¥ä¸ã®è¨è¿°ã«ãåæ§ã«ãã¦ã¯ã¾ãï¼
|
---|
192 |
|
---|
193 | (2) ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åãå¿
|
---|
194 | è¦ãªã¿ã¤ãã³ã°
|
---|
195 |
|
---|
196 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããã®ã¯ï¼ä»æ§æ¸ã«ããã¨ï¼ãã¿ã¹ã¯ä¾å¤å¦ç
|
---|
197 | 許å¯ç¶æ
|
---|
198 | ããä¿çä¾å¤è¦å ã 0 ã§ãªãããã¿ã¹ã¯ãå®è¡ç¶æ
|
---|
199 | ã§ããããéã¿
|
---|
200 | ã¹ã¯ã³ã³ããã¹ãã¾ãã¯CPUä¾å¤ãã³ãã©ãå®è¡ããã¦ããªããã®åã¤ã®æ¡ä»¶
|
---|
201 | ãæã£ãå ´åã§ããï¼ãã®ãã¨ããï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åãè¡ãå¿
|
---|
202 |
|
---|
203 | è¦ãããã®ã¯ï¼ä»¥ä¸ã®ã¿ã¤ãã³ã°ã§ããï¼
|
---|
204 |
|
---|
205 | (a) ã¿ã¹ã¯ãã£ã¹ãããã®ç´å¾
|
---|
206 |
|
---|
207 | ã¿ã¹ã¯ãã£ã¹ãããã«ããï¼å®è¡ç¶æ
|
---|
208 | ã®ã¿ã¹ã¯ï¼runtskï¼ãå¤åããï¼æ°ãã
|
---|
209 | å®è¡ç¶æ
|
---|
210 | ã«ãªã£ãã¿ã¹ã¯ãèµ·åæ¡ä»¶ãæºããã¦ããã°ï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ã
|
---|
211 | ã³ãèµ·åããï¼
|
---|
212 |
|
---|
213 | (b) å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®åºå£
|
---|
214 |
|
---|
215 | å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ï¼ä»¥ä¸ï¼ãã³ãã©ã¨ç·ç§°ããï¼ã®åºå£ã§ã¯ï¼
|
---|
216 | ã¿ã¹ã¯ãã£ã¹ããããè¡ãå ´åãããï¼ãã®å ´åã«ã¯ï¼(a) ã®çç±ã§å¿
|
---|
217 | è¦ãªãï¼
|
---|
218 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããï¼
|
---|
219 |
|
---|
220 | ãã³ãã©ã®åºå£ã§ã¿ã¹ã¯ãã£ã¹ããããè¡ããªãå ´åã§ãï¼ãã³ãã©å
|
---|
221 | ã§å®è¡
|
---|
222 | ç¶æ
|
---|
223 | ã®ã¿ã¹ã¯ã«å¯¾ãã¦ã¿ã¹ã¯ä¾å¤å¦çãè¦æ±ãããå ´åã«ã¯ï¼ãã³ãã©ã®åºå£
|
---|
224 | ã§èµ·åæ¡ä»¶ããã§ãã¯ãï¼èµ·åæ¡ä»¶ãæºããã¦ããã°ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³
|
---|
225 | ãèµ·åããï¼ãã³ãã©ãå¤éã«èµ·åããã¦ããå ´åï¼æãå¤å´ã®ãã³ãã©ã®åº
|
---|
226 | å£ã§ã®ã¿è¡ãï¼â»ï¼ï¼
|
---|
227 |
|
---|
228 | (c) èªã¿ã¹ã¯ã«å¯¾ããã¿ã¹ã¯ä¾å¤å¦çã®è¦æ±
|
---|
229 |
|
---|
230 | èªã¿ã¹ã¯ã«å¯¾ãã¦ã¿ã¹ã¯ä¾å¤å¦çãè¦æ±ããçµæï¼èªã¿ã¹ã¯ãèµ·åæ¡ä»¶ãæºã
|
---|
231 | ãããã«ãªãã°ï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããï¼
|
---|
232 |
|
---|
233 | (d) ã¿ã¹ã¯ä¾å¤å¦çã®è¨±å¯
|
---|
234 |
|
---|
235 | ã¿ã¹ã¯ä¾å¤å¦ç許å¯ç¶æ
|
---|
236 | ã«ç§»è¡ããçµæï¼èªã¿ã¹ã¯ãèµ·åæ¡ä»¶ãæºããããã«
|
---|
237 | ãªãã°ï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããï¼ã¿ã¹ã¯ä¾å¤å¦ç許å¯ç¶æ
|
---|
238 | ã¸ã®ç§»
|
---|
239 | è¡ã¯ï¼ena_tex ã®å¼åºãã«ãã£ã¦èµ·ããï¼
|
---|
240 |
|
---|
241 | (3) ãµã¼ãã¹ã³ã¼ã«å¦çå
|
---|
242 | ã§ã®æç¤ºçãªãã£ã¹ãããã£ã®å¼åºã
|
---|
243 |
|
---|
244 | ã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã³åºããããµã¼ãã¹ã³ã¼ã«å¦çã«ããã¦ãã£ã¹ãã
|
---|
245 | ããå¿
|
---|
246 | è¦ã«ãªã£ãå ´åï¼ãµã¼ãã¹ã³ã¼ã«ã®å¦çã䏿ãã¹ãã¿ã¤ãã³ã°ã§
|
---|
247 | dispatch ãå¼ã³åºãï¼dispatch ãå¼ã³åºãã¨ï¼ãã®æç¹ã§æãåªå
|
---|
248 | é ä½ã®é«
|
---|
249 | ãã¿ã¹ã¯ãå®è¡ãããï¼dispatch ã¯ï¼å¼ã³åºããã¿ã¹ã¯ã次ã«å®è¡ç¶æ
|
---|
250 | ã«ãª
|
---|
251 | ãã¨ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ããã§ãã¯ãï¼èµ·åæ¡ä»¶ãæºããã¦ã
|
---|
252 | ãã°ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããï¼
|
---|
253 |
|
---|
254 | ãã®ããï¼dispatch ãå¼ã³åºãããµã¼ãã¹ã³ã¼ã«ã¸å¦çãæ»ã£ã¦ããã®ã¯ï¼
|
---|
255 | å¼ã³åºããã¿ã¹ã¯ã次ã«å®è¡ç¶æ
|
---|
256 | ã¨ãªãï¼èµ·åãã¹ãã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³
|
---|
257 | ããªããªã£ãæç¹ã§ããï¼
|
---|
258 |
|
---|
259 | ãªãï¼dispatch ã®å¦çã¯ï¼ã¿ã¼ã²ããä¾åé¨ã§æä¾ãããï¼
|
---|
260 |
|
---|
261 | (4) å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®åºå£ã§ã®å¦ç
|
---|
262 |
|
---|
263 | å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ï¼ä»¥ä¸ï¼ãã³ãã©ã¨ç·ç§°ããï¼ã®åºå£å¦ç
|
---|
264 | ã§ã¯ï¼ãã£ã¹ããããå¿
|
---|
265 | è¦ãï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åãå¿
|
---|
266 | è¦ãããã§ã
|
---|
267 | ã¯ãï¼å¿
|
---|
268 | è¦ãªå¦çãè¡ãï¼ãã³ãã©ãå¤éã«èµ·åããã¦ããå ´åï¼æãå¤å´ã®
|
---|
269 | ãã³ãã©ã®åºå£ã§ã®ã¿ãã®å¦çãè¡ãï¼
|
---|
270 |
|
---|
271 | å
|
---|
272 | ·ä½çã«ã¯ï¼ãã£ã¹ãããã¨ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åã®ããããã®å¦ç
|
---|
273 | ãå¿
|
---|
274 | è¦ãªå ´åã«ã¯ reqflg ã TRUE ã«ãããã¨ã¨ãï¼æãå¤å´ã®ãã³ãã©ã®åº
|
---|
275 | å£ã§ reqflg ã TRUE ã«ãªã£ã¦ããã°ï¼ã¾ããã£ã¹ããããå¿
|
---|
276 | è¦ããã§ãã¯ãï¼
|
---|
277 | å¿
|
---|
278 | è¦ãªããã£ã¹ããããè¡ãï¼ãã£ã¹ãããã«ããæ°ãã«å®è¡ç¶æ
|
---|
279 | ã«ãªã£ãã¿
|
---|
280 | ã¹ã¯ãã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ãæºããã¦ããã°ï¼ã¿ã¹ã¯ä¾å¤å¦ç
|
---|
281 | ã«ã¼ãã³ãèµ·åããï¼ãã£ã¹ããããå¿
|
---|
282 | è¦ãªãã£ãå ´åã«ã¯ï¼å®è¡ä¸ã®ã¿ã¹ã¯
|
---|
283 | ãã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ãæºããã¦ããããã§ãã¯ãï¼æºããã¦
|
---|
284 | ããã°ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãèµ·åããï¼äºã¤ã®ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®
|
---|
285 | èµ·åå¦çã¯ï¼æå³çã«ã¯ç°ãªããã®ã ãï¼ã«ã¼ãã³çã«ã¯å
|
---|
286 | ±éåã§ããå¯è½æ§
|
---|
287 | ãããï¼
|
---|
288 |
|
---|
289 | ãªãï¼ãã³ãã©ã®åºå£å¦çã¯ï¼ã¿ã¼ã²ããä¾åé¨ã§æä¾ãããï¼
|
---|
290 |
|
---|
291 | (5) ã¿ã¹ã¯ã®èµ·åã¨çµäºæã®å¦ç
|
---|
292 |
|
---|
293 | ã¿ã¹ã¯èµ·åæã®ã¬ã¸ã¹ã¿å¾©å¸°ã¨ï¼ã¿ã¹ã¯çµäºæã®ã¬ã¸ã¹ã¿ä¿åã¯ï¼ã¿ã¼ã²ãã
|
---|
294 | ä¾åé¨ã®å®è£
|
---|
295 | ã«ãã£ã¦ã¯çç¥ã§ããï¼
|
---|
296 |
|
---|
297 | ã¿ã¹ã¯ã®èµ·åã¯ï¼create_context 㨠activate_context ã«ãã£ã¦ï¼æ¬¡ã«ãã®
|
---|
298 | ã¿ã¹ã¯ã¸ã®ãã£ã¹ããããèµ·ãã£ãæã«ï¼ã¿ã¹ã¯ã®èµ·åçªå°ããå®è¡ãããã
|
---|
299 | ã«ã¿ã¹ã¯ã³ã³ããã¹ããè¨å®ãããã¨ã§è¡ãï¼
|
---|
300 |
|
---|
301 | ã¿ã¹ã¯çµäºæã«ã¯ï¼unlock_cpu ã«ä»£ãã¦ï¼exit_and_dispatch ãå¼ã³åºãï¼
|
---|
302 | exit_and_dispatch ã¯ï¼ç¾å¨å®è¡ä¸ã®ã³ã³ããã¹ããä¿åããã«ï¼ãã£ã¹ãã
|
---|
303 | ããè¡ã颿°ã§ããï¼
|
---|
304 |
|
---|
305 | ãªãï¼create_contextï¼activate_contextï¼exit_and_dispatch ã®å¦çã¯ï¼ã¿ã¼
|
---|
306 | ã²ããä¾åé¨ã§æä¾ãããï¼
|
---|
307 |
|
---|
308 | (6) å®è¡ã§ããç¶æ
|
---|
309 | ã®ã¿ã¹ã¯ããªãå ´åã®æ±ã
|
---|
310 |
|
---|
311 | å®è¡ã§ããç¶æ
|
---|
312 | ã®ã¿ã¹ã¯ããªãå ´åã®å¯¾çã¨ãã¦ï¼ã¢ã¤ãã«ã¿ã¹ã¯ãå°å
|
---|
313 | ¥ãã
|
---|
314 | æ¹æ³ãããï¼ã¢ã¤ãã«ã¿ã¹ã¯ãå°å
|
---|
315 | ¥ããã¨ï¼ãã£ã¹ãããã£ã®éä¸ã§å²è¾¼ã¿å¾
|
---|
316 |
|
---|
317 | ã¡ãããå¿
|
---|
318 | è¦ããªãã®ã§ï¼ã½ããã¦ã§ã¢ã®æ§é çã«ã¯ã¨ã¬ã¬ã³ãã«ãªãï¼ã¾ãï¼
|
---|
319 | ãã£ã¹ãããã£ä¸ã§ã®æ¡ä»¶åå²ãæ¸ãï¼éã«ï¼RAM ã®ä½¿ç¨éãã©ããã¦ãå¢ã
|
---|
320 | ã¦ãã¾ãã¨ããåé¡ãããï¼ãã®ãã¨ããï¼ã¢ã¤ãã«ã¿ã¹ã¯ã¯ä½¿ããªãæ¹éã¨
|
---|
321 | ããï¼
|
---|
322 |
|
---|
323 | (7) ãã£ã¹ãããä¿çç¶æ
|
---|
324 | ã®ä¿ææ¹æ³
|
---|
325 |
|
---|
326 | ãã£ã¹ããããä¿çãããã®ã¯ï¼æ¬¡ã®ããããã®å ´åã§ããï¼
|
---|
327 |
|
---|
328 | ã»ãã£ã¹ãããç¦æ¢ç¶æ
|
---|
329 |
|
---|
330 | ã»éã¿ã¹ã¯ã³ã³ããã¹ãå®è¡ä¸
|
---|
331 |
|
---|
332 | CPUä¾å¤ãã³ãã©ã¯éã¿ã¹ã¯ã³ã³ããã¹ãã§å®è¡ããã¨ããããï¼CPUä¾å¤ãã³
|
---|
333 | ãã©å®è¡ä¸ã¯ï¼éã¿ã¹ã¯ã³ã³ããã¹ãå®è¡ä¸ã«å«ãã¦èãããã¨ãã§ããï¼ã¾
|
---|
334 | ãï¼ãµã¼ãã¹ã³ã¼ã«ã¯ãã¹ã¦å²è¾¼ã¿ç¦æ¢ã§å®è¡ããããï¼ãµã¼ãã¹ã³ã¼ã«å®è¡
|
---|
335 | ä¸ãèæ
|
---|
336 | ®ããå¿
|
---|
337 | è¦ããªãï¼
|
---|
338 |
|
---|
339 | ãã®ä¸ã§ï¼éã¿ã¹ã¯ã³ã³ããã¹ãå®è¡ä¸ã¯ï¼sense_context() ã§å¤å®ã§ããï¼
|
---|
340 | ããã§ï¼ãã£ã¹ãããç¦æ¢ç¶æ
|
---|
341 | ã表ãBOOLåã®å¤æ°ãç¨æããã°ï¼ãã£ã¹ãã
|
---|
342 | ãä¿çç¶æ
|
---|
343 | ãä¿æã§ãããã¨ã«ãªãï¼å®éã«ã¯ï¼ãã£ã¹ããã許å¯ç¶æ
|
---|
344 | ã表ã
|
---|
345 | BOOLåã®å¤æ° enatex ãå°å
|
---|
346 | ¥ããï¼
|
---|
347 |
|
---|
348 | â» ãµã¼ãã¹ã³ã¼ã«å®è¡ä¸ã«å²è¾¼ã¿ã許å¯ããï¼ãã£ã¹ãããã¯è¨±å¯ããªãï¼
|
---|
349 | å ´åã«ã¯ï¼ãµã¼ãã¹ã³ã¼ã«å¦çã®éä¸ã§èµ·åãããå²è¾¼ã¿ãã³ãã©ã®åºå£ã§ã¯ï¼
|
---|
350 | ãã£ã¹ããããã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åãè¡ã£ã¦ã¯ãªããªãï¼åç
|
---|
351 | §ãã
|
---|
352 | å ´æãéããã¨ããï¼ä¸¡è
|
---|
353 | ã®ç¦æ¢ãå¥ã
|
---|
354 | ã®å¤æ°ã«ããæ¹æ³ãèãããããï¼è¨
|
---|
355 | å®ããæ¹ã®å¹çãèããã¨ï¼ä¸ã¤ã®å¤æ°ã§ä¸¡æ¹ç¦æ¢ã§ããæ¹ãè¯ãã¨æãããï¼
|
---|
356 | ããªãã¡ï¼ãã£ã¹ãããç¦æ¢ç¶æ
|
---|
357 | ã¨ãµã¼ãã¹ã³ã¼ã«å®è¡ä¸ç¶æ
|
---|
358 | ãï¼åã夿°ã
|
---|
359 | ããããã£ã¼ã«ãã«åãã¦è¨æ¶ããã®ã妥å½ã¨èããããï¼ããã«ï¼CPUä¾å¤
|
---|
360 | ãã³ãã©ãã¿ã¹ã¯ã³ã³ããã¹ãã§å®è¡ããå®è£
|
---|
361 | ã§ã¯ï¼åã夿°ã«CPUä¾å¤ãã³
|
---|
362 | ãã©ã®ãã¹ãåæ°ãè¨æ¶ããããªãï¼ä¾ãã°ï¼æ¬¡ã®ãããªå¤æ° pndflg ãå°å
|
---|
363 | ¥
|
---|
364 | ããæ¹æ³ãèããããï¼
|
---|
365 |
|
---|
366 | ã»æä¸ä½ããã ⦠ãµã¼ãã¹ã³ã¼ã«å®è¡ä¸
|
---|
367 | â 1 ãªã両è
|
---|
368 | ä¿ç
|
---|
369 | ã»ä¸ãã2ãããã ⦠ãã£ã¹ãããç¦æ¢ç¶æ
|
---|
370 |
|
---|
371 | â 1 ãªãã¿ã¹ã¯åæ¿ãä¿ç
|
---|
372 | ã»æ®ãã®ããã ⦠CPUä¾å¤ãã³ãã©ã®ãã¹ãåæ°
|
---|
373 | â 0 以å¤ãªãã¿ã¹ã¯åæ¿ãä¿ç
|
---|
374 |
|
---|
375 |
|
---|
376 | ï¼ï¼ãµã¼ãã¹ã³ã¼ã«ã®è¨è¿°æ¹æ³
|
---|
377 |
|
---|
378 | (1) sns_xxx
|
---|
379 |
|
---|
380 | sns_ctxï¼sns_locï¼sns_dspï¼sns_tex ã¯ï¼ãµã¼ãã¹ã³ã¼ã«å
|
---|
381 | é¨ã§ã¯ãªãã£ã«
|
---|
382 | ã«ã»ã¯ã·ã§ã³ãä½ããªãã¦ãå®è£
|
---|
383 | ã§ããï¼
|
---|
384 |
|
---|
385 | (2) ã¿ã¹ã¯ã³ã³ããã¹ãå°ç¨ã®ãµã¼ãã¹ã³ã¼ã«
|
---|
386 |
|
---|
387 | â» CPUããã¯ç¶æ
|
---|
388 | ã§å¼ã°ããã¨ã¨ã©ã¼ã«ãªããã¨ã«æ³¨æï¼
|
---|
389 |
|
---|
390 | (2-1) ã¿ã¹ã¯åæããèµ·ãããªããã®ï¼ä¾: get_priï¼
|
---|
391 |
|
---|
392 | ã¨ã©ã¼ãã§ãã¯
|
---|
393 | t_lock_cpu();
|
---|
394 | /*
|
---|
395 | * ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³å®è¡
|
---|
396 | */
|
---|
397 | t_unlock_cpu();
|
---|
398 |
|
---|
399 | (2-2) ã¿ã¹ã¯åæããèµ·ããå¯è½æ§ã®ãããã®ï¼ä¾: act_tskï¼
|
---|
400 |
|
---|
401 | ã¨ã©ã¼ãã§ãã¯
|
---|
402 | t_lock_cpu();
|
---|
403 | /*
|
---|
404 | * ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³å®è¡
|
---|
405 | */
|
---|
406 | if (ã¿ã¹ã¯ãã£ã¹ããããå¿
|
---|
407 | è¦ && enadsp) {
|
---|
408 | /* èªã¿ã¹ã¯ãå¾
|
---|
409 | ã¡ç¶æ
|
---|
410 | ã«ãããµã¼ãã¹ã³ã¼ã«ã§ã¯ï¼
|
---|
411 | ä¸ã§ enadsp ããã§ãã¯ããå¿
|
---|
412 | è¦ã¯ãªãï¼*/
|
---|
413 | dispatch();
|
---|
414 | }
|
---|
415 | t_unlock_cpu();
|
---|
416 |
|
---|
417 | (2-3) èªã¿ã¹ã¯ãçµäºãããã®ï¼ext_tskï¼
|
---|
418 |
|
---|
419 | ã¨ã©ã¼ãã§ãã¯
|
---|
420 | t_lock_cpu();
|
---|
421 | /*
|
---|
422 | * ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³å®è¡
|
---|
423 | */
|
---|
424 | exit_and_dispatch();
|
---|
425 |
|
---|
426 | (2-4) ras_tex
|
---|
427 |
|
---|
428 | ã¨ã©ã¼ãã§ãã¯
|
---|
429 | tcb = get_tcb_self(tskid);
|
---|
430 | t_lock_cpu();
|
---|
431 |
|
---|
432 | E_OBJã¨ã©ã¼ã®ãã§ãã¯
|
---|
433 |
|
---|
434 | tcb->texptn |= rasptn;
|
---|
435 | if (tcb == runtsk && runtsk->enatex) {
|
---|
436 | texptn = runtsk->texptn;
|
---|
437 | runtsk->enatex = FALSE;
|
---|
438 | runtsk->texptn = 0;
|
---|
439 |
|
---|
440 | t_unlock_cpu();
|
---|
441 | (*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);
|
---|
442 |
|
---|
443 | /* CPUããã¯ç¶æ
|
---|
444 | ã®ã¾ã¾ãªã¿ã¼ã³ããå ´åã対ç */
|
---|
445 | if (!t_sense_lock()) {
|
---|
446 | t_lock_cpu();
|
---|
447 | }
|
---|
448 |
|
---|
449 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ãå度ãã§ãã¯ï¼èµ·å
|
---|
450 | ï¼runtsk->texptn ã 0 ã«ãªãã¾ã§ä¸ã®å¦çãç¹°ãè¿ãï¼
|
---|
451 |
|
---|
452 | runtsk->enatex = TRUE;
|
---|
453 | }
|
---|
454 | t_unlock_cpu();
|
---|
455 |
|
---|
456 | (2-5) ena_tex
|
---|
457 |
|
---|
458 | ã¨ã©ã¼ãã§ãã¯
|
---|
459 | t_lock_cpu();
|
---|
460 |
|
---|
461 | E_OBJã¨ã©ã¼ã®ãã§ãã¯
|
---|
462 |
|
---|
463 | runtsk->enatex = TRUE;
|
---|
464 | if (runtsk->texptn != 0) {
|
---|
465 | texptn = runtsk->texptn;
|
---|
466 | runtsk->enatex = FALSE;
|
---|
467 | runtsk->texptn = 0;
|
---|
468 |
|
---|
469 | t_unlock_cpu();
|
---|
470 | (*runtsk->tinib->texrtn)(texptn, runtsk->tinib->exinf);
|
---|
471 |
|
---|
472 | /* CPUããã¯ç¶æ
|
---|
473 | ã®ã¾ã¾ãªã¿ã¼ã³ããå ´åã対ç */
|
---|
474 | if (!t_sense_lock()) {
|
---|
475 | t_lock_cpu();
|
---|
476 | }
|
---|
477 |
|
---|
478 | ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ãå度ãã§ãã¯ï¼èµ·å
|
---|
479 | ï¼runtsk->texptn ã 0 ã«ãªãã¾ã§ä¸ã®å¦çãç¹°ãè¿ãï¼
|
---|
480 |
|
---|
481 | runtsk->enatex = TRUE;
|
---|
482 | }
|
---|
483 | t_unlock_cpu();
|
---|
484 |
|
---|
485 | (3) éã¿ã¹ã¯ã³ã³ããã¹ãå°ç¨ã®ãµã¼ãã¹ã³ã¼ã«
|
---|
486 |
|
---|
487 | â» CPUããã¯ç¶æ
|
---|
488 | ã§å¼ã°ããã¨ã¨ã©ã¼ã«ãªããã¨ã«æ³¨æï¼
|
---|
489 |
|
---|
490 | (3-1) ã¿ã¹ã¯åæ¿ããèµ·ãããªããã®
|
---|
491 |
|
---|
492 | i_lock_cpu();
|
---|
493 | /*
|
---|
494 | * ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³å®è¡
|
---|
495 | */
|
---|
496 | i_unlock_cpu();
|
---|
497 |
|
---|
498 | (3-2) ã¿ã¹ã¯åæ¿ããèµ·ããå¯è½æ§ã®ãããã®ï¼ä¾: iact_tskï¼
|
---|
499 |
|
---|
500 | i_lock_cpu();
|
---|
501 | /*
|
---|
502 | * ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³å®è¡
|
---|
503 | *
|
---|
504 | * ã¿ã¹ã¯ãã£ã¹ããããå¿
|
---|
505 | è¦ãªå ´åã«ã¯ï¼reqflg ã TRUE ã«ããï¼
|
---|
506 | * ãã ãï¼enadsp ã FALSE ã®æã¯ï¼reqflg ã TRUE ã«ããªãï¼
|
---|
507 | */
|
---|
508 | i_unlock_cpu();
|
---|
509 |
|
---|
510 | (3-3) iras_tex
|
---|
511 |
|
---|
512 | ã¨ã©ã¼ãã§ãã¯
|
---|
513 | tcb = get_tcb(tskid);
|
---|
514 | i_lock_cpu();
|
---|
515 |
|
---|
516 | E_OBJã¨ã©ã¼ã®ãã§ãã¯
|
---|
517 |
|
---|
518 | tcb->texptn |= rasptn;
|
---|
519 | if (tcb == runtsk && runtsk->enatex) {
|
---|
520 | reqflg = TRUE;
|
---|
521 | }
|
---|
522 | i_unlock_cpu();
|
---|
523 |
|
---|
524 | 以ä¸
|
---|
525 |
|
---|
526 |
|
---|