注:本文档为《从0学x86操作系统》课程配套的学习文档,提供相应的辅助学习资料和答疑勘误。 有关该课程的信息,请点击这里访问:https://study.163.com/provider/1017884735/index.htm 在阅读本文档时,如有疑问和建议,欢迎在下方留言或者直接联系我。
本小节简要地介绍了当多个程序需要同时运行于同一颗CPU内核上时,操作系统需要做什么才能让多个程序看起来是同时运行的。
主要内容
视频中以工厂生产为例,引出了解决问题的方法:允许接受多个订单,但是具体在生产时,轮流给每个订单一些时间用于生产该订单的产品。当要切换到生产其它的订单时,记录下当前生产的状态。然后当要继续生产之前的订单时,恢复到之前的生产状态。
这种方法虽然看起来让单个订单的生产总时间要长很多,但是却能让所有订单都能得到及时处理。
类似的,每个程序相当于是包含了生产指南的订单,工厂相当于是CPU,操作系统相当于是管理人员。为了能让多个程序同时得到执行,操作系统会轮流在不同的程序间给予一定的时间运行。当要从一个程序切换至另一个程序时,会先将之前程序的运行状态保存起来,然后再切换。等到将来再恢复到该程序运行时,恢复到之前运行状态,继续往下运行。
x86在硬件上对这种运行状态的保存和恢复提供了相应的支持,既通过TSS(任务状态段)保存有关任务的运行状态。
参考资料
- TSS相关信息,见课程附带的intel编程文档卷3 第252页:Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide