Job get put in to the queue when the window opens, they then sit there untill a resorce becomes avalible to run them. If the resorces are busy for example rerunning failed jobs, slow throughput or down drive, then the jobs in the queue may never get a chance to use the resores before the window closes. In that case you will get a 196. Look at what is happening to stop the jobs starting. Also check the policy settings to ensure that the jobs are getting a fair shot at running.
If you have a window of 3 hours and a frequency of 1 day then the job will go into the queue 24 hours after the last time it ran. So if the last time it ran it only managed to start 1 minute befoe the end of the queue then next's days job will go into the queue 1 minute from the end of thw window. But the scheduler only checks for jobs to submit every 5 to 10 minutes (dependant on your settings) so you could miss your slot.