Why OS#

Course Structure#

Todo#

  • Restructure why/code -> why/why-os

    • rename cmake targets accordingly

  • Reformulate Tasks? Processes? Threads? in terms of this

  • Enable/disable safeguards against blocking in interrupts

    • class FD to handle this

    • start unchecked

      • inside the isr, prompt the user

      • see how everything stalls

      • user input -> continue

    • enable check

Random Notes#

jjj sort that out

Intro#

When you somewhere want to consume data that was produced by an ISR, you either do it in another (timer possibly) interrupt, or in the main loop, pointlessly polling for something that will only happen once in a lifetime. must do powermanagement in that loop, suspending the device in deep sleep when on battery.

Scheduling, Tasks/Threads#

Realtime#

  • hmmm show priority inversion?

Interrupt Communication#

  • message queue/pipe usage -> blocking in isr forbidden

  • possibly only signal someone who’s sleeping?

  • one msqg for (thread, interrupt)? or msgq1=(thread1, (interrupt1, interrupt2)), msgq2=(thread2, (interrupt3))

Polling#