当前位置: 技术问答>linux和unix
问个最基础的问题:双击exe程序为啥它就运行了?
来源: 互联网 发布时间:2017-02-13
本文导语: 如题,程序为什么能执行, 请说说它的运行过程和方式,在linux上 ./a.out 它就运行了,为什么? 程序的运行是把它的二进制代码放入内存中去, 那我怎么放txt文件上去(它能运行吗?), 有什么方法可以看到内存上当...
如题,程序为什么能执行, 请说说它的运行过程和方式,在linux上 ./a.out 它就运行了,为什么?
程序的运行是把它的二进制代码放入内存中去, 那我怎么放txt文件上去(它能运行吗?), 有什么方法可以看到内存上当时存在什么东西吗?
麻烦懂的人 详细说说吧! 拒绝灌水。
程序的运行是把它的二进制代码放入内存中去, 那我怎么放txt文件上去(它能运行吗?), 有什么方法可以看到内存上当时存在什么东西吗?
麻烦懂的人 详细说说吧! 拒绝灌水。
|
exe双击后会向操作系统发出一条消息,操作系统将程序(指令和数据)加载到内存并等待处理器的调度。处理器调度后,程序从入口指令(main)处开始一条指令一条指令的执行,当然这时的指令已经是二进制的机器语言了,主要是操作数据在寄存器之间运算,并最终运行结束。
txt之所以无法运行,最主要的是操作系统无法识别其中的指令。如果存在一个可以解释其中指令的东西,它也是可以运行的,这好比是托管运行(像JVM,CLR,SHELL等)。操作系统首先调用解释程序去解释txt中的指令,将txt的指令转换成机器语言再传给计算机。
linux上的a.out之所以能运行,有两个原因:一个原因是它是计算机可识别的机器指令文件(只不过在linux下它不是以扩展名exe标识的),再一个原因是设置了它的操作权限中的可执行位(若这个权限位没有设置,也是不能运行的)。
txt之所以无法运行,最主要的是操作系统无法识别其中的指令。如果存在一个可以解释其中指令的东西,它也是可以运行的,这好比是托管运行(像JVM,CLR,SHELL等)。操作系统首先调用解释程序去解释txt中的指令,将txt的指令转换成机器语言再传给计算机。
linux上的a.out之所以能运行,有两个原因:一个原因是它是计算机可识别的机器指令文件(只不过在linux下它不是以扩展名exe标识的),再一个原因是设置了它的操作权限中的可执行位(若这个权限位没有设置,也是不能运行的)。
|
这个,简单说就是os和shell对不同文件格式采用不同的解析策略
ELF 文件 - UNIX 类操作系统中普遍采用的目标文件格式ELF(Executable and Linkable. Format)
对于windows则是PE文件 自己google下吧
ELF 文件 - UNIX 类操作系统中普遍采用的目标文件格式ELF(Executable and Linkable. Format)
对于windows则是PE文件 自己google下吧
|
exe的文件有部分也可在linux 下的wine中模拟运行。