导航:首页 > 操作系统 > linuxfork线程

linuxfork线程

发布时间:2024-12-25 13:52:29

Ⅰ 如何去理解linux中进程,线程等概念

对于linux来说,则没有很明确的进程、线程概念。首先linux只有进程而没有线程,然而它的进程又可以表现得像windows下的线程。linux利用fork()和exec函数族来操作多线程。fork()函数可以在进程执行的任何阶段被调用,一旦调用,当前进程就被分叉成两个进程——父进程和子进程,两者拥有相同的代码段和暂时相同的数据段(虽然暂时相同,但从分叉开的时刻就是逻辑上的两个数据段了,之所以说是逻辑上的,是因为这里是“写时复制”机制,也就是,除非万不得已有一个进程对数据段进行了写操作,否则系统不去复制数据段,这样达到了负担最小),两者的区别在于fork()函数返回值,对于子进程来说返回为0,对于父进程来说返回的是子进程id,因此可以通过if(fork()==0)…else…来让父子进程执行不同的代码段,从而实现“分叉”。
exec函数族的函数的作用则是启动另一个程序的新进程,然后完全用那个进程来代替自己(代码段被替换,数据段和堆栈被废弃,只保留原有进程id)。这样,如果在fork()之后,在子进程代码段里用exec启动另一个进程,就相当于windows下的CreateThread()的用处了,所以说linux下的进程可以表现得像windows下的线程。
然而linux下的进程不能像windows下线程那样方便地通信,因为他们没有共享数据段、地址空间等。它们之间的通信是通过所谓IPC(InterProcess Communication)来进行的。具体有管道(无名管道用于父子进程间通信,命名管道可以用于任意两个进程间的通信)、共享内存(一个进程向系统申请一块可以被共享的内存,其它进程通过标识符取得这块内存,并将其连接到自己的地址空间中,效果上类似于windows下的多线程间的共享数据段),信号量,套接字。
标签: 进程, 线程

阅读全文

与linuxfork线程相关的资料

热点内容
儿童编程免费教学20节课 浏览:118
java判断时间格式 浏览:906
分析程序员招聘分析程序员 浏览:113
soul苹果会员为什么比安卓贵 浏览:860
安卓ncm怎么转换成mp3 浏览:712
山东百兆服务器云服务器 浏览:875
安卓主题怎么自定义 浏览:320
抓包如何知道是不是加密接口 浏览:246
prebuild增加编译文件 浏览:955
遗憾值算法反复逸代 浏览:800
ps里一个文件夹怎么创建动作 浏览:682
直接能编译的语言 浏览:152
捷途app怎么样才可以控制车 浏览:509
androidmenu布局 浏览:887
苹果手机备忘录怎么视频加密不了 浏览:79
棋盘覆盖实验算法描述 浏览:6
怎么看移动硬盘加密 浏览:893
神舟装linux 浏览:81
系统命令程序 浏览:448
全世界通用解压方法 浏览:69