背景:最近在做项目学习的时候,突然发现了一个与中断很像的东西(我自以为),我一直傻傻分不清楚。这并是我之前讨论过的子线程,而是任务调度。这玩意儿,我一直以为就是中断,最好发现根本不是。故而搜集资料,在此总结下。


任务调度是操作系统内核的一部分,负责管理和调度系统中的各种任务或进程。任务调度器负责根据系统资源、优先级、执行顺序等因素,决定何时执行哪个任务,以实现对系统任务的合理分配和优化利用。任务调度的目的是实现系统的高效、公平、及时地处理各种任务,并保证任务间的共享资源的正确访问。

常见的任务调度算法包括:

  • 先来先服务调度(First-Come, First-Served,FCFS)
  • 最短作业优先调度(Shortest Job First,SJF)
  • 轮转调度(Round Robin)
  • 优先级调度(Priority Scheduling)
  • 多级反馈队列调度(Multilevel Feedback Queue Scheduling)等。


中断服务是操作系统处理硬件中断的机制,用于响应外部事件或硬件发生的事件。当外部设备或硬件发生某种情况时,会向CPU发送中断信号,操作系统会中断当前正在执行的任务,转而执行相应的中断处理程序(中断服务程序),以响应和处理中断事件。中断服务保证了系统对实时性要求较高的事件能够得到及时响应和处理。 常见的中断包括外部中断(如硬件中断、时钟中断等)、软中断、异常(异常中断)等。

 

  思考:①咋区分中断服务和任务调度?

  中断服务是随机的,具有不确定性,绝大部分都是用于处理硬件设备产生的时间,相应实时性比较高的时间。但是任务调度大部分都是系统确定好的,具有确定性。任务调度是操作系统中用来管理和调度系统中的各种任务或进程的机制,决定何时执行哪个任务。

            ②任务调度中提到了进程,难道它跟子线程一样?

  任务调度和子线程是两个不同的概念,虽然它们都涉及处理并发执行的任务或线程。但是勒!任务调度更倾向于对系统层面的任务调度和管理,强调的是任务,而子线程更多地涉及应用层面的线程创建和执行。在实际编程中,可以通过任务调度器在操作系统级别管理多个任务的执行顺序,同时使用多线程编程技术来创建和管理子线程,实现并发执行任务的目的(虽然不同,但是联系也是挺深的)。


中断服务和任务调度的认识(看加粗字体即可)_任务调度

                                                      示例

  总结任务调度纯是玩软件,中断服务大部分是玩硬件,子线程虽纯是玩软件,但相比于任务调度重点却是在线程,而非任务。