关于Window OS的问题
问题:
1。如果在网上邻居中看到一台机器下的一个应用程序,双击鼠标就可以执行该程序,现在想知道的是这个程序的具体执行过程是怎么样的?
我是这样理解的:
首先要把该程序的可执行代码载入本地内存中,但该代码可能需要一些动态链库中的内容,然后只能在本地寻找? 如果找不到,就出错。
那就是说,如果有两台机器,A机器除了Windows操作系统,什么也没装,而B机器装了VC,VB等反正什么都装了,而B上有一个应用程序(不妨设为App_B_1)需要这些装了的系统中的某些DLL文件,这样如果在A上启动App_B_1肯定要出错,是不是?
另外,比如App_B_1需要访问注册表或者是文件系统中的一些东西,它是到A机器上寻找还是到B机器上找呢?
我试着做如下解释,因为在Windows系统中,几乎所有的东西都是以对象的形式出现的,文件是对象,进程是对象,事件(比如Event)也是对象,然后由操作系统的对象管理器对对象进行管理,核心态可以通过指针来直接访问这些对象,而用户态就必须通过句柄(handle)才能访问这些对象。对象管理器中有操作对象方法,其中有一个方法为Parse,它用来查找具体的对象,而如果程序是在其他机器上的,这个Parse方法就能去那台机器上找对象?不知道这样理解对不对?而如果这样理解正确的话,就是说如果在A机器上执行B机器上的EXE文件的时候,实际上会在网络上发生多次的包交换?
以上是我的理解,还望高手指正。
2。我们知道通过网上邻居,A机器可以直接执行B机器上的某一个目录(B_DIR_1)一个EXE(B_DIR_1_APP1)文件,也可以把B_DIR_1映射成本地的一个磁盘(比如K),在这两种方式下,执行B_DIR_1_APP1会有什么不同呢?也就是说它们实现的机理是怎么样的?