Windows程序运行原理(1)

                <div class="simditor-body clearfix" style="height: auto; overflow: inherit;">
                    
                    <p style="text-indent: 2em;">
做底层硬件嵌入式的不愿去懂上层PC软件,而做上层PC软件的又不愿去懂底层硬件,做<a href="http://www.elecfans.com/tags/fpga/" target="_blank"><u>FPGA</u></a>不懂FPGA逻辑属硬软核处理器属软。现在,HLS的出现,让FPGA本属于硬件HDL的开发慢慢变成HLS的软件开发,有种当年汇编开发走向C开发的感觉。目前,各大FPGA厂商正在努力搭建HDL到HLS的桥梁,让以后的我们以后能够用HLS高效开发。现在,让我们看看Windows应用程序,操作系统,计算机硬件之间的相互关系,看看它们之间的桥梁如何搭建的。</p>

其中,上图中,输入输出设备就是计算硬件:键盘、鼠标、耳机等。

【1】 .操作系统中有很多操作底层的函数接口,也就是我们常说的驱动,这些驱动是直接操作计算机硬件的动作,比如让声卡发出声音。但是,你有没有发现,操作系统可以操作硬件,但是是何时操作了?操作系统不知道,就好比你不买了一个玩具车,装上电池它就可以跑起来,但是你不控制遥控它并不知道要去那;

【2】.操作系统对设备进行输入、输出和闭环控制。按键鼠标状态输入,显示器输出显示,而硬盘的读写操作就要不断的读取剩余的空间等信息才做有效的写操作的闭环控制。在这里说个题外话:学习学习是不断学和习的闭环,而很多人学的不好就是环没有闭好,理论与实践的结合更恰当的说是理论和实践的闭环,理论与实践如果不闭环就是纸上谈兵和一介武夫而已;

【3】.前面说过操作系统能很好的去操作底层硬件,但是不知道什么时候去操作和操作到了什么程度,这些都是由应用程序来是实现的,也就是我们常说的应用程序调用API来操作底层硬件,不同的是没有操作系统的单片机由单一的1个Main应用程序去调用API,读取所需要的一个底层设备状态;而有操作系统的PC机由多个应用程序去调用API,读取所需要的多个底层设备的状态。这里就会遇到一个问题,多个应用程序调用API操作相同的底层硬件,这不就乱套了?

【4】.在这里Windows通过消息队列来处理多个应用程序下的问题:将多个应用程序的操作写入到消息队列中,并按照先写先操作(类似FPGA中的FIFO)的原则去调用API和读取底层设备的状态信息,将时间片切碎分时复用,这种消息队列的处理机制比较复杂,不过没关系,这些都由操作系统来管理并完成,应用程序开发者不用管,开发者开发起来简单方便。

【5】.操作系统中这种消息队列的机制为多个底层驱动和多个应用程序通信搭建了很好的桥梁,非常方便应用程序和底层驱动的独立开发维护。如果我们搭建的嵌入式系统中没有用到操作系统,底层和应用层开发独立性差,我们完全可以借鉴消息队列这种思维方式来搭建我们的系统架构来独立底层和应用层的开发。

猜你喜欢

转载自blog.csdn.net/qq_40627648/article/details/84778058
今日推荐