andy
3fc7fa863e
Affected files: .obsidian/graph.json .obsidian/workspace-mobile.json .obsidian/workspace.json Christmas Movies.md Politcs/Fascism.md Politcs/Neoliberalism/Neoliberalism.md STEM/AI/Neural Networks/CNN/Interpretation.md STEM/CS/Languages/Python.md STEM/IOT/OS/Composition.md STEM/IOT/OS/Contiki.md STEM/IOT/OS/OS.md STEM/IOT/OS/README.md STEM/img/iot-event-based.png STEM/img/iot-os-stack.png STEM/img/iot-thread-based.png
1.5 KiB
1.5 KiB
Threading
Smallest sequence of programmed instructions that can be managed independently by a scheduler From <https://en.wikipedia.org/wiki/Thread_(computing)>
- Instructions run independently by scheduler
- Single address space
- One thread blocked for I/O
- Tasks run in other threads
- Need locks and mutexes
- Coordination between threads
- Complicated
- Deadlocks
Protothreads
- Lightweight
- Stack-less
- Interruptible tasks for event-based
- Conditional blocking statement
- Blocks until given statement is true
- Use timer to manage
- Invoked whenever process receives message from another process or timer
Events
Action or occurrence recognized by software, often originating asynchronously from the external environment, that may be handled by the software From <https://en.wikipedia.org/wiki/Event_(computing)>
- Event loop
- Waits for events
- Inputs
- Waits for events
- On event
- Collects info
- Dispatches to call-back
- Collects info
- Register handlers with OS scheduler
- Kernel usually runs loop to poll for events
- Blocking operation
- Register call-back
- Return control to scheduler
- Register call-back
Radio Sleep
- Energy efficiency
- Congestion
Event-based
Thread-based
- Less complex
- Faster
- Pointer-based