Understanding Mongoose as an ESP32 freertos task

OK so as I now understand things:

  1. There is no other Espressif written ESP-32 task in a plain vanilla mos compiled application
  2. The only other items that could possibly possibly pre-empt code that is busy attempting to run to completion are: a) hardware interrupts and b) callbacks called by hardware timers. In both of these cases, the code attempting to complete will be suspended for the duration of that ISR or callback (which will typically be a very short time, and I should not worry about it).

However, this generates 3 new questions:

  1. When all of my code in this event generated architecture has completed, and the system is just idling, what code/hardware/thing resets the WDT?
  2. How are software timers implemented? (They can’t be implemented as “code running to completion” because you can program an unlimited number of them, yet - unlike a a hardware timer- they are prevented from triggering a callback when , for example, my code is busy trying to finish writing to flash).
  3. If my flash writing takes 20 seconds to complete, what happens to a software timer that is programmed to repeat at 60 seconds? (Does it expire at approximately 60 seconds from when it is called? or will it expire at closer to 80 seconds?)

Thanks for your help!

JSW