我的问题已解决

来源:互联网 发布:warframe网络问题 编辑:程序博客网 时间:2024/05/21 08:49
作系统本质上也是一个软件  只不过它比应用软件的权限高  


鸟翔于水 2015-5-18 20:14:27




星云 2015-5-18 20:14:28
那你问的这些问题是什么意思
20:14:47
鸟翔于水 2015-5-18 20:14:47


可执行文件是依赖于操作系统还是依赖于CPU???


鸟翔于水 2015-5-18 20:15:16
可执行文件的执行时依赖于操作系统还是依赖于具体的硬件?


鸟翔于水 2015-5-18 20:15:59
我最近看了,安卓的系统,安卓的系统下面跑了一个虚拟机


星云 2015-5-18 20:16:05
为什么说 C和C++是编译型语言而JAVA 是解释型语言???


编译型和解释型的区别是:编译型编译为最终的机器指令   解释型是在执行的时候再编译   JAVA是半编译半解释(编译成中间文件,执行时进一步的编译成目标机器上的指令)
20:17:00
鸟翔于水 2015-5-18 20:17:00
在Windows上的C软件能在LINUX上运行吗?


鸟翔于水 2015-5-18 20:17:05




星云 2015-5-18 20:17:08
那么用C编写的程序能够在安卓平台上跑???


无论是什么语言编写的,只要能最终编译为相应系统能识别的执行文件   能编译为相应的CPU指令集的指令    都能执行   还用得着分是什么语言么   


鸟翔于水 2015-5-18 20:17:17
现在学迷了


鸟翔于水 2015-5-18 20:18:52
那么,书上为什么说,操作系统为应用程序屏蔽了硬件?


星云 2015-5-18 20:19:00
应用程序和操作系统是什么关系???操作系统是如何管理应用程序的???


操作系统负责管理各种资源,包括硬件、内存、文件等等,应用程序运行在虚拟内存中,不能直接访问资源,也不必直接访问,操作系统负责管理和分配这些资源,应用程序使用时调用对应的API,取得相应的资源:比如内存、打开某文件、打印文件、访问某个硬件设备
20:20:10
鸟翔于水 2015-5-18 20:20:10




星云 2015-5-18 20:20:30
操作系统控制着所有硬件,原因?因为同时要运行成百上千的程序,系统的作用就是管理运行着的程序,它管理着硬件,合理分配硬件和资源,要不然所有的程序都同时访问同一个东东,这时就会冲突


星云 2015-5-18 20:21:29
看起来程序像是都在运行,实际上是分时切换的,设备看起来也是都能访问,实际上操作系统作为管理员,程序要用任何东西要申请,比如某个文件正被其他程序独占时,其他程序访问该文件,系统会报错


鸟翔于水 2015-5-18 20:21:52


20:22:14
星云 2015-5-18 20:22:14
操作系统是什么?就是一个管理员   应用程序是什么?就是被管理的对象


星云 2015-5-18 20:22:24
操作系统负责实现很多东西


鸟翔于水 2015-5-18 20:22:54
那么,应用程序是如何被操作系统加载到内存中执行的呢?


星云 2015-5-18 20:23:05
可执行文件是依赖于操作系统还是依赖于CPU???


这句话真是无语了,无论是什么程序,操作系统也好,程序也好,当然必须能编译成对应的CPU能执行的指令才行


鸟翔于水 2015-5-18 20:23:52
例如:在鼠标点击一个软件的图标,那么这个软件运行,这个过程中操作系统是怎么做的呢?




例如:在鼠标点击一个软件的图标,那么这个软件运行,这个过程中操作系统是怎么做的呢?
20:24:41
星云 2015-5-18 20:24:41
至于可执行文件,当然也依赖于操作系统,
理由如下:
执行文件必须是操作系统可识别的文件格式,打开执行文件时,操作系统有一个专门的程序加载器,负责将该执行文件加载到内存(比如微软的PE格式,后缀exe),中间的东西很细  自己看操作系统的原理或实现




另一理由:程序的功能并不是全由它自己实现的,操作硬件:比如外设、内存、打开文件等,其实不是程序实现的,都是操作系统实现的,写程序的时候有开发库,这个开发库是什么?它里面就是包含了调用系统功能的东东,只是我们平时不用考虑




SO,所有的程序依赖于操作系统,比如为微软系统开发的程序不能直接运行在LINUX上,LINUX程序也不能直接运行在微软系统上,因为他们用的系统API不同一样的(微软的叫WIN32 API,LINUX的是Linux API




这里说的是不能直接互相运行,但万事不能绝对,比如JAVA的就可以,或者直接在微软系统上装一个转换LINUX API的程序就能




也就是说  程序程序必须满足三个条件:它的执行文件格式要能被操作系统打开和加载(识别),否则没法打开;它调用设备等资源的API必须与要运行的操作系统相兼容,否则无法调用系统的API,访问各种资源;它编译出来的指令格式要能与CPU兼容,否则根本没法在硬件层运行起来




星云 2015-5-18 20:33:56
那看你学的是什么  




先学学应用层,知道应用程序都有什么功能是自己实现   什么是系统功能


鸟翔于水 2015-5-18 20:35:16
还没学,。。。


星云 2015-5-18 20:35:38
那你算了   连应用都不会就学底层   


鸟翔于水 2015-5-18 20:36:00
本来我以为要学底层驱动,才能弄明白呢






没事 不聊了  你有空学学WIN32   推荐你一个书:Windows程序设计(第5版)
现在学这个的人很少了  学这个的前提是会C语言(不需要C++)


星云 2015-5-18 20:43:09


20:42:20
星云 2015-5-18 20:42:20




鸟翔于水 2015-5-18 20:43:21
那我可以好好学学啦


星云 2015-5-18 20:43:31
这个学了对你学其他的应用技术也算有帮助   另外电脑上的大型游戏其实也用的WIN32开发的界面(当然游戏不可能只有界面)


至于你学之前问的问题之类的  暂时放掉不要去细想了
计算机大致可分为由:硬件 + 操作系统 + 应用软件 构成
操作系统就是一个中间层,应用软件是不能直接访问硬件的,原因很简单,硬件是有限的,多个程序同时运行的话必须有个管理员来分配这些东东,另外,应用程序不必直接控制硬件(如果要直接访问,应用程序开发时还得为不同的设备写驱动等,那就回到DOS时代了)




虚拟机其实也算是操作系统,它是操作系统的基础上再加了一层操作系统,它不直接实现所有的功能,它也有一批API(比如JAVA的JDK),有的API是自己实现的,有的就是访问操作系统,虚拟机主要是负责管理内存和运行在自己里面的程序,另外解释执行的语言它会再解释一下,转为对应CPU的指令格式)





0 0
原创粉丝点击