大家好,今天小编关注到一个比较有意思的话题,就是关于编程猫乱拉屎教程的问题,于是小编就整理了1个相关介绍编程猫乱拉屎教程的解答,让我们一起看看吧。
为什么操作系统不能屏蔽底层的架构(arm,x86,mips),为应用软件提供一个统一的运行环境呢?
你所说的屏蔽,就是上层做封装,但是封装以后带来的就是性能问题,比如安卓,如果你的代码全部用java写,那么所有支持安卓的的设备都可以统一的运行,但是性能就无法保证了,所以才有了jni层,需要做不同系统架构的适配
因为手机CPU,单片机CPU性能弱,硬件抽象层(HAL)非常消耗性能(和电量)。 windows和linux 都有HAL,其实安卓也有,所以安卓机要靠硬件优势才能维持和iphone类似的性能
为什么有这样的问题?像Linux就是可以运行在不同CPU架构上的操作系统,Windows也支持过ARM,但是因为软件兼容性问题,支持不够。核心问题不是操作系统本身,而是程序本身是否是跨平台的。
如果是编译的软件生成二进制机器码,那么就不能在不同CPU上运行。所以C/C++编译的程序不能跨平台、跨CPU。
而运行虚拟机的Java程序,它生成的不是机器码,而是虚拟机指令,可以在各种平台的虚拟机里运行。由虚拟机来屏蔽底层OS和CPU等的差异。所以,JAVA在服务器平台得到广泛应用。安卓系统也是基于J***a虚拟机技术的一套手机操作系统,屏蔽了底层的手机硬件差别,使得安卓程序可以运行于各种手机CPU上,以前Intel也推出x86的安卓手机。
为什么手机需要用安卓系统而不是直接用J***a或者Linux?因为J***a和Linux不是专门针对手机操作的,导致手机应用的开发、维护、支持方面的不足,例如界面、动画、图形、操作、通知、wifi、蓝牙、陀螺仪、GPS等等。实际上之前摩托罗拉等开发过一些Linux的手机操作系统,但是应用太少。不少手机上也支持J***a虚拟机,我们在上面开始运行一些小游戏。但是它们与提供统一解决方案的安卓系统相比相差太大,动画、界面、操作看起来就像红白机时代一样。
所以,安卓系统可以看成是屏蔽了底层实现的操作系统,当然是基于虚拟机技术和跨平台编译的Linux。
但是虚拟机存在一个运行效率的问题,应用软件先转化成与平台无关的中间指令,然后虚拟机再将中间指令转化成实际指令。谷歌引入了二次编译技术,在安装软件时,进一步编译转化成机器代码,可以提高运行效率。但是,这样也破坏了移植性,因为转换之后的二进制就不能再在其他手机上运行了。华为针对自己的手机和CPU也做了方舟编译器的优化处理,可以提高运行效率。
跨平台技术与运行效率是两个不可调和的矛盾。从J***a和.Net技术开始,就一直在研究和发展。安卓系统是一个在手机上得到广泛使用的系统。谷歌正在开发的Fuchsia操作系统,就是要进一步取代“安卓+Linux”的架构,成为真正的单一系统,进一步提高在手机等设备上的运行效率。
你的想法很好,不是不可能,只是没人去做吧。
最合理的结构是,操作系统对硬件的差异屏蔽,应用生态环境对操作系统的差异屏蔽。
操作系统这块理念相对成熟,应用生态这块差距较大。J***A为此而生,不够完美。正是这种差距,反而可以是我们突破的机会。
到此,以上就是小编对于编程猫乱拉屎教程的问题就介绍到这了,希望介绍关于编程猫乱拉屎教程的1点解答对大家有用。