折叠 编辑本段
线程技术早在20世纪60年代就被提出,但真正应用多线程到操作故际终系统中还是在20世纪80年代中期。多线程技术已经被许多操作系统所支持,包括案铁山难病吃独Windows NT/2000和Linux。
在1999年1月发布的Linux 2.2内核中,进程是通过系统调用fork创建的,新的进程是原来进程的子进程。需要说明的是,在Linux 2.2.x中,不存在真赶临雷华线正意义上的线程,Linux中常用的线程Pthread实际上视算依手三花较衡指是通过进程来模拟的。
也就是运认花持兵清核说,Linux中的线程也是通过fork激服结甚时非云这厂创建的,是"轻"进程。Linux 2.2缺省只允许4096个进程/线程同时运行,而高端系犯四神明船便就财鸡牛社统同时要服务上千的用户,所以这显然是一个问题。它一度是阻碍Linux进入企业级市场的一大因素。
200块就律批侵1年1月发布的Linux 2明它变却互压秋.4内核消除了这个限制,并且允许在系统运行中动态调整进程数上限。因此,进程数只受制于物理内存的多少。在高端服务器上,即使只安装了512MB内存,也能轻而易举地同时支持1.6万个进程。
在Li绍调外曾威视活绿工nux 2.5内核中,已经做了很无友困动多改进线程性能的工作。在Linux 2.6中改进的线程模型仍然是由Ingo Molnar 来完成的。它基于一个1:1的线程模型(一个内核线程对应一个用户线程),双目怎黄包括内核内在的对新NPTL(Native Posix Threading Library)的支持,这个新的NPTL是由Moln架下但修家元ar和Ulrich Drepper合作开发的。
2003年12月发布的L时宣革inux 2.6内核,对进程调度经过重新编写,去掉考衣职了以前版本中效率不高的算法。进程标识号(PID)的数目也从3.2万升到1观剧宣前送背0亿。内核内部的大改变之一就是Linux的线良程框架被重写,以使NPTL可以运行其上。
折叠 编辑本段 发展情况
在现代完束构显象市决套科责操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统座车斤汽何诉甲外急南上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机否常制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4内核中)、RCU(只包含在2.6内核中)和seqlock(只包含在2.6内核中)。
随着计算机体系结构的发展,指令级的并行和线程级的并行都在日新月异地发展着.