aboutsummaryrefslogtreecommitdiff
path: root/docs/miscelaneous/jobs_vs_tasks.md
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2016-06-30 17:18:49 +0200
committerKarel Kočí <cynerd@email.cz>2016-06-30 17:18:49 +0200
commit4e1ce86af16307bf7d42657db07600867c7c4bbc (patch)
tree5d0dfddea221c91545a9bd57ac7face5842291d4 /docs/miscelaneous/jobs_vs_tasks.md
parent147cb7f0e67d1f3c3274effa5476607e24664182 (diff)
downloadavr-ioe-4e1ce86af16307bf7d42657db07600867c7c4bbc.tar.gz
avr-ioe-4e1ce86af16307bf7d42657db07600867c7c4bbc.tar.bz2
avr-ioe-4e1ce86af16307bf7d42657db07600867c7c4bbc.zip
Add some more progress and split non-core functionality to separate repo
More progress to implementation and some changes in project it self. This library will implement only drivers for features on chip but nothing else. Everything connected externally is now in separate repository.
Diffstat (limited to 'docs/miscelaneous/jobs_vs_tasks.md')
-rw-r--r--docs/miscelaneous/jobs_vs_tasks.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/docs/miscelaneous/jobs_vs_tasks.md b/docs/miscelaneous/jobs_vs_tasks.md
new file mode 100644
index 0000000..17d7fdd
--- /dev/null
+++ b/docs/miscelaneous/jobs_vs_tasks.md
@@ -0,0 +1,17 @@
+Jobs vs. Tasks
+==============
+This document refers to [Jobs](/parts/jobs.md) and [Tasks](/parts/tasks.md).
+
+You should be familiar with threads from other platforms. Tasks are from usability
+point of view almost same. They are switched according their priority and
+availability. Jobs are different. They are designed to execute single function at
+the time and when this function exits it executes another. It cant interrupt
+execution when more important task come. So why use jobs instead of tasks? Task
+requires for their run stack memory and during whole live of task is this memory
+taken. This limits number of tasks running. Jobs are sharing same stack and only
+one function has data on it at the time. This results in less memory consumption.
+Another huge difference is how planing works. Tasks are planned based on priority.
+Task with higher priority will run unless it isn't suspended. Jobs don't have
+priority, but they have to specify time until they should be finished (deadline)
+and duration of execution. With these two parameters jobs planner can plan their
+execution.