本文主要是介绍4.18作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 任务调度算法之间的区别:
- 先来先服务调度算法(FCFS):按照任务到达的顺序进行调度。
- 最短作业优先调度算法(SJF):选择执行时间最短的任务优先执行。
- 优先级调度算法:根据任务的优先级进行调度,优先级高的任务先执行。
- 时间片轮转调度算法:将CPU时间分成时间片,按照轮转的方式进行调度。
2. 静态创建任务和动态创建任务的区别:
- 静态创建任务:需要具体的栈同时提供栈的大小。始于用任务数量确定的情况下。
- 动态创建任务:不需要指定具体的栈只需要提供栈的大小。适用于随时申请和随时释放的场景。
动态消耗的资源比静态消耗的比较多
动态创建任务和静态创建任务的源码分析步骤:
- 动态创建任务:通过调用任务创建函数(如pthread_create)在运行时创建任务。
- 静态创建任务:在编译时将任务信息写入代码中,如使用宏定义或静态变量定义任务。
3. 任务的状态及转换关系:
- 就绪状态(Ready):任务已经准备好执行,等待分配CPU。
- 运行状态(Running):任务正在执行。
- 阻塞状态(Blocked):任务由于某些原因暂时无法执行,如等待I/O操作完成。
- 完成状态(Finished):任务执行完成。
- 就绪状态和运行状态之间的转换:任务从就绪状态转换为运行状态,开始执行。
- 运行状态和阻塞状态之间的转换:任务在执行过程中遇到阻塞事件,转换为阻塞状态。
- 阻塞状态和就绪状态之间的转换:阻塞事件完成后,任务转换为就绪状态等待执行。
- 运行状态和完成状态之间的转换:任务执行完成后,转换为完成状态。
这篇关于4.18作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!