在单处理系统中,任何时间里只能有一个任务处于运行状态。 非运行状态的任务,它处于这 3 中状态之一:阻塞(Blocked)、暂停(Suspended)、就绪(Ready)。就绪态的任务,可以被调度器挑选出来切换为运行状态,调度器永远都是挑选最高优先级的就绪态任务并让它进入运行状态。
阻塞状态的任务,它在等待"事件",当事件发生时任务就会进入就绪状态。事件分为两类:时间相关的事件、同步事件。所谓时间相关的事件,就是设置超时时间:在指定时间内阻塞,时间到了就进入就绪状态。
使用时间相关的事件,可以实现周期性的功能、可以实现超时功能。同步事件就是:某个任务在等待某些信息,别的任务或者中断服务程序会给它发送信息。
同步事件发起:process_post_synch(&test3_process, temp_event_s, NULL); //同步事件发生,理解就是:当程序运行至此函数时,temp_event_s事件发出,会立即去执行test3_process等待事件下面的函数,就是抢占了优先级提前执行.
异步事件发起:process_post(&test3_process, temp_event_3, NULL); //事件temp_event_3发出,会等待其他进程执行完毕,将test3_process进程设置就绪态,随后按优先级先后执行.
怎么"发送信息"?方法很多,有:任务通知(task notification)、队列 (queue)、事件组(event group)、信号量(sem