本文分析Linux早期版本-Linux0.11 io阻塞下切换线程的问题。虽然现在Linux都4.X了,但是操作系统灵魂性的、基本性的东西不会轻易改变的。况且分析参天大树早期的小树芽比直接分析参天大树有趣、高效得多。这也是本人从MOOC网哈工大张治军老师的《操作系统》课上领悟到的。
“学习操作系统就是要coding them...”所以选择一个能力范围内的Linux内核版本并coding them, Linux0.11是一个很好的选择。考虑到这是本人在csdn的第一篇博文,所以说了很多。。。下面开始正题吧。
想到写这篇博文的主要动力是因为我在课程讨论区上看到一位同学发出的chat.
https://www.icourse163.org/learn/HIT-1002531008#/learn/forumdetail?pid=1005173138
他提到了几个问题,不外乎关于操作系统进程阻塞、进程切换问题。
对于他提出来一连串问题我总结了两点。
执行序列请求IO会引起中断?
一旦执行序列进入IO阻塞,那如何切换到其它执行序列?
备注:执行序列是一个通俗概念可指线程也可指进程。泛泛的说就是程序执行时在操作系统支持下给用户展示出实体的样子。
对于这两点:我使用代码加图示分析。
加入某应用打开power这个驱动并获取文件描述符power_fd
read(power_fd, &electric, 4);
sleep(1);
printf("e