操作系统--Linux线程

Linux内核在2.2版本中引入了线程机制。Linux提供了fork,这是具有传统进程复制功能的系统调用。Linux还提供了系统调用clone,其功能类似于创建一个线程。clone与fork的行为类似,它不是创建调用进程的复制,而是创建一个独立进程以共享原来调用进程的地址空间。通过共享父进程的地址空间,clone任务能像独立线程一样工作。
由于Linux 内核进程的特定表示方式,所以允许共享地址空间。系统内的每个进程都有一个唯一的内核数据结构。不过,该数据结构并不保存该数据结构中进程本身的数据,而是保存了此数据保存出的数据结构的指针。例如每个进程的数据结构都包括其他数据结构(如表示打开文件列表、信号处理信息和虚拟内存等)的指针。当调用fork时,就创建了新进程,它具有父进程的所有相关数据结构的拷贝。当调用clone时,也创建了新进程。但是,新进程并不是复制所有数据结构,而是指向了父进程的数据结构,从而允许子进程共享父进程的内存和其他进程资源。作为系统调用clone 的参数,可传递一些标记的集合,这个标记集用来指出父进程有多少内容被子进程共享了。如果没有设置标记,那么就没有共享且clone与fork一样动作。如果设置了所有五个标记,那么子进程与父进程就共享了一切。其他不同标记的组成形成了这两极之间的不同程度的共享。
有趣的是,Linux并不区分进程和线程。事实上,Linux在讨论程序内的控制流时,通常称之为任务而不是 进程或线程。除了克隆进程外,Linux并不支持多线程、独立数据结构或内核子程序。不过,各种Pthread实现可以用于用户多线程编程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值