- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
02-多过程
Linux及Win32的进程比较 WIN32的进程管理方式与Linux上有着很大区别,在UNIX里,只有进程的概念,但在WIN32里却还有一个线程的概念,那么Linux及WIN32在这里究竟有着什么区别呢?WIN32里的进程/线程是继承自OS/2的。在WIN32里,进程是指一个程序,而线程是一个进程里的一个执行线索。从核心上讲,WIN32的多进程与Linux并无多大的区别,在WIN32里的线程才相当于Linux的进程,是一个实际正在执行的代码。但是,WIN32里同一个进程里各个线程之间是共享数据段的。这才是与Linux的进程最大的不同。 胡恿把提捅适颈地氓毫专捡孟芦拔农廊葫荚衅蛙铂赠症吞攘漆筒嗓倚糙矢02-多进程02-多进程 Linux及Win32的进程比较 例子:Win32下CreateProcess int g;DWORD WINAPI ChildProcess( LPVOID lpParameter ){int i;for ( i = 1; i 1000; i ++) {g ++;printf( This is Child Thread: %d\n, g );}ExitThread( 0 );};void main(){int threadID;int i;g = 0;CreateThread( NULL, 0, ChildProcess, NULL, 0, threadID );for ( i = 1; i 1000; i ++) {g ++;printf( This is Parent Thread: %d\n, g );}} 烧柄源基跪让安钟氖菊也匿帅己司浆猪铝寓骋粪淬衬妒晨棕躬客本厚浴瑚02-多进程02-多进程 Linux及Win32的进程比较 在WIN32下,使用CreateThread函数创建线程,与Linux下创建进程不同,WIN32线程不是从创建处开始运行的,而是由 CreateThread指定一个函数,线程就从那个函数处开始运行。此程序同前面的UNIX程序一样,由两个线程各打印1000条信息。 threadID是子线程的线程号,另外,全局变量g是子线程与父线程共享的,这就是与Linux最大的不同之处。大家可以看出,WIN32的进程/线程要比Linux复杂,在Linux要实现类似WIN32的线程并不难,只要fork以后,让子进程调用ThreadProc函数,并且为全局变量开设共享数据区就行了,但在WIN32下就无法实现类似fork的功能了。所以现在WIN32下的C语言编译器所提供的库函数虽然已经能兼容大多数 Linux/UNIX的库函数,但仍无法实现fork。 盼看腾尚斤静岔山择仿戒域痢回头炔链坟做屯送磺统婪墅芝恤琼纫香讥为02-多进程02-多进程 Linux及Win32的进程比较 对多任务系统,共享数据区是必要的,但也是一个容易引起混乱的问题,在WIN32下,程序员要避免线程之间的数据是共享的这一情况,一个线程修改过一个变量后,另一个线程却又修改了它,结果引起程序出问题。但在Linux下,由于变量本来并不共享,而由程序员来显式地指定要共享的数据,使程序变得更清晰与安全。 覆勿丧晋典署撂刀铅躁恢居让咨发掇滩吩琳熔伞冤告慨吭垂袋休械构豺潍02-多进程02-多进程 Linux下的线程 Linux也有自己的多线程函数pthread,它既不同于Linux的进程,也不同于WIN32下的进程,关于pthread的介绍及如何在Linux环境下编写多线程程序 ,且听下回分解。 脾蹈贺悉两都珊俭纂槽怎沛空潭铰盆鬼懦拳异唯蓄醒籽月悍挟高门忆以泰02-多进程02-多进程 * Linux培训讲义 基于Ubuntu,RHEL 多进程 唬予蔚蝇亚琼嘘芥决幢戈二泊萤仪喂铂蝇烬谐疼恒娶源狞叶胸佳音苏巾呵02-多进程02-多进程 教学内容 Linux下进程的结构 Linux下的进程控制 进程相关API Linux下的IPC Linux及Win32的进程比较 示吾哟琅歹仑氖骏秽企乓绿信顾桓姻撅布憾季莆歹典浊幂哼古椰壹蚁助绸02-多进程02-多进程 ?Linux下进程的结构 Linux下一个进程在内存里有三部分的数据,就是“代码段”、“堆栈段”及“数据段”。其实学过汇编语言的人一定知道,一般的CPU都有上述三种段寄存器,以方便操作系统的运行。这三个部分也是构成一个完整的执行序列的必要的部分。 痹贯开惜靖鸡乐僵宽州妆墅著咙绢沮抗易媒逼页件稠碳蛛串八玉庸烫薯逃02-多进程02-多进程 Linux下进程的结构 “代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用相同的代码段。 “堆栈段”存放的就是子程序的返回地址、子程序
原创力文档


文档评论(0)