导航:首页 > 操作系统 > 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线程相关的资料

热点内容
游戏程序员上班 浏览:449
知到app上怎么退出 浏览:7
我的服务器为什么登不进去 浏览:768
android短信拦截代码 浏览:344
编译原理etf 浏览:718
phpapi视频教程 浏览:722
中小学网络云平台免费网课app怎么注册 浏览:367
clion编译数据库 浏览:694
网约app怎么样啊 浏览:338
软件app学习通怎么复制 浏览:109
哄懵和安卓是什么关系 浏览:473
pdf官方网站 浏览:385
信阳程序员招聘 浏览:231
变分的运算法则推导ppt 浏览:593
互信息特征选择算法 浏览:240
现代挖机空调压缩机 浏览:275
程序员一生谁先写完谁先走 浏览:552
云服务器怎么加快速度 浏览:443
java编程规范google 浏览:712
免费图片压缩到指定大小 浏览:765