- Timestamp:
- 07/04/14 12:34:23 (10 years ago)
- Branches:
- 4.11, 5, master
- Children:
- 9f228bea
- Parents:
- 52f8e90d
- git-author:
- Sebastian Huber <sebastian.huber@…> (07/04/14 12:34:23)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (07/09/14 08:05:17)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/user/smp.t
r52f8e90d r5c3d250 148 148 issue needs further investigation. 149 149 150 @subsection Scheduler Helping Protocol 151 152 The scheduler provides a helping protocol to support locking protocols like 153 @cite{Migratory Priority Inheritance} or the @cite{Multiprocessor Resource 154 Sharing Protocol}. Each ready task can use at least one scheduler node at a 155 time to gain access to a processor. Each scheduler node has an owner, a user 156 and an optional idle task. The owner of a scheduler node is determined a task 157 creation and never changes during the life time of a scheduler node. The user 158 of a scheduler node may change due to the scheduler helping protocol. A 159 scheduler node is in one of the four scheduler help states: 160 161 @table @dfn 162 163 @item help yourself 164 165 This scheduler node is solely used by the owner task. This task owns no 166 resources using a helping protocol and thus does not take part in the scheduler 167 helping protocol. No help will be provided for other tasks. 168 169 @item help active owner 170 171 This scheduler node is owned by a task actively owning a resource and can be 172 used to help out tasks. 173 174 In case this scheduler node changes its state from ready to scheduled and the 175 task executes using another node, then an idle task will be provided as a user 176 of this node to temporarily execute on behalf of the owner task. Thus lower 177 priority tasks are denied access to the processors of this scheduler instance. 178 179 In case a task actively owning a resource performs a blocking operation, then 180 an idle task will be used also in case this node is in the scheduled state. 181 182 @item help active rival 183 184 This scheduler node is owned by a task actively obtaining a resource currently 185 owned by another task and can be used to help out tasks. 186 187 The task owning this node is ready and will give away its processor in case the 188 task owning the resource asks for help. 189 190 @item help passive 191 192 This scheduler node is owned by a task obtaining a resource currently owned by 193 another task and can be used to help out tasks. 194 195 The task owning this node is blocked. 196 197 @end table 198 199 The following scheduler operations return a task in need for help 200 201 @itemize @bullet 202 @item unblock, 203 @item change priority, 204 @item yield, and 205 @item ask for help. 206 @end itemize 207 208 A task in need for help is a task that encounters a scheduler state change from 209 scheduled to ready (this is a pre-emption by a higher priority task) or a task 210 that cannot be scheduled in an unblock operation. Such a task can ask tasks 211 which depend on resources owned by this task for help. 212 213 In case it is not possible to schedule a task in need for help, then the 214 scheduler nodes available for the task will be placed into the set of ready 215 scheduler nodes of the corresponding scheduler instances. Once a state change 216 from ready to scheduled happens for one of scheduler nodes it will be used to 217 schedule the task in need for help. 218 219 The ask for help scheduler operation is used to help tasks in need for help 220 returned by the operations mentioned above. This operation is also used in 221 case the root of a resource sub-tree owned by a task changes. 222 223 The run-time of the ask for help procedures depend on the size of the resource 224 tree of the task needing help and other resource trees in case tasks in need 225 for help are produced during this operation. Thus the worst-case latency in 226 the system depends on the maximum resource tree size of the application. 227 150 228 @subsection Critical Section Techniques and SMP 151 229
Note: See TracChangeset
for help on using the changeset viewer.