WINDOWS和LINUX的系统层次比较

发布时间:2023-12-24 15:10:59   来源:文档文库   
字号:
刚毕业的时候,做了将近一年的 Window下的程序开发,主要用 MFC,那是 也不明白程序在操作系统角度从上到下的整个调用层次。 遇到调用库函数,不明 白,就查MSDN,每个月1500行代码左右,那是以为这就是软件开发了。后来 跳槽的另外一家公司,工作也是 Windows下的程序开发,这里可以用到多线程、 COM件,还能用到涉及模式,那是高兴的不得了。刚开始用到多线程,就买 了一本书WIN32多线程程序设计》,边学边用。
创建线程有好几种方法,比如: CreatThread_beginthread等,记得当时 不明白这几种方法有何区别,就随便拿一个用。心中有疑问:怎么创建一个线程 么多函数? WINAPICRTMFC到底有何关联?最近读《程序员的自我修 养》一书,给了我明确的答复。参考下图:
----- ---- - ------
Application I scr Model


































infer





3 f


hcriiftl modci
System ( all
Kernel











JU













创建线程函数分属不同的层次/类库,如下: CreateThread(; WINAPI : 1. 2. 3.
CRT: MFC _beginthread(; AfxBegi nThread(; _beginthreadex(; 从上图可以看到,CRTMFC函数最终都是调用 WINAPI来实现的。即 CRTMFC库函数都是对 WIN API的封装。
Linux下应用程序调用层次如下图:

Applicadon


::








----------- 1 ------------------------------ M -------------------------------------------
-! ! :!"

jr ti V



i
r




X 1 * ■








rnr


(UK
j
System Call
I

KcrFinl iiMMiirl






.i……L……I--J1L


r1 ---- 1 2 3 4 1 ---- ---- ' --- ------ '






i
Krmal :

:
- ---- 1 --- ---- 1 --- 1 --- ---- --------- 1 --- ---- 1 --- --- ----

上图只是列出了 CRT,当然也存在其它很多类库,比如 Linux下的线程库 QT,是对系统调用的封装。
Windowslinux程序调用层次图,我们可以看到有如下区别:
Linux下可以直接进行程序调用,而 Windows下不能直接进行系统调用。 Windows下的系统调用接口微软并没有开放给 developer,而是在系统调用上 面添加了一层WINAPI。至于微软为什么不开放系统调用,而添加一层WINAPI 诸位可以参考《程序员的自我修养》第 12章的12.3.2Windows API是以DLL 导出函数的形式暴露给 developer的,核心DLLkernel32.dlluser32.dll gdi32.dll.我们可以用dumpbin /EXPORTS *.dll命令来查看每个dll的导出函数。
根据以上2个图,来简单谈一下跨平台编程。大家知道 windows下的应用 程序.exe放到Linux下是不能运行的,反之,Linux下同样不能运行 Windows 的程序,就相当于用 PDF Reader打不开 Word文档一样,大家知道 Windows 下的可执行文件是PE文件格式,Linux可执行文件下是ELF文件格式。
我们程序员写的代码,用Windows下的编译器连接器cl,VC++编译链接 编译连接后,生成的目标文件是PE文件格式,同样的代码在Linux下用编译 gcc编译,链接器ld链接生成的目标文件是ELF文件格式。同样的代码在不同 的平台下编译通过的前提是代码中的函数符号 Symbo I能够被正确识别,这里我 们不得不提及 CRT,即 C Run time, Win dows 下是 MSVCRT, Li nux 下是 glibc GNU C Library. C 语言运行库至少包含如下功能:

1 2 3 4 程序的启动和退出;
标准函数既是C语言标准库; I/0 heap的圭寸装和实现;

本文来源:https://www.2haoxitong.net/k/doc/2a339ca01cd9ad51f01dc281e53a580216fc509a.html

《WINDOWS和LINUX的系统层次比较.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式