-
並行技術
鎖定
- 中文名
- 並行技術
- 外文名
- Parallel Technology
- 領 域
- 軟件技術
並行技術發展歷史
在1999年1月發佈的Linux 2.2內核中,進程是通過系統調用fork創建的,新的進程是原來進程的子進程。需要説明的是,在Linux 2.2.x中,不存在真正意義上的線程,Linux中常用的線程Pthread實際上是通過進程來模擬的。
也就是説,Linux中的線程也是通過fork創建的,是“輕”進程。Linux 2.2缺省只允許4096個進程/線程同時運行,而高端系統同時要服務上千的用户,所以這顯然是一個問題。它一度是阻礙Linux進入企業級市場的一大因素。
2001年1月發佈的Linux 2.4內核消除了這個限制,並且允許在系統運行中動態調整進程數上限。因此,進程數只受制於物理內存的多少。在高端服務器上,即使只安裝了512MB內存,也能輕而易舉地同時支持1.6萬個進程。
在Linux 2.5內核中,已經做了很多改進線程性能的工作。在Linux 2.6中改進的線程模型仍然是由Ingo Molnar 來完成的。它基於一個1:1的線程模型(一個內核線程對應一個用户線程),包括內核內在的對新NPTL(Native Posix Threading Library)的支持,這個新的NPTL是由Molnar和Ulrich Drepper合作開發的。
2003年12月發佈的Linux 2.6內核,對進程調度經過重新編寫,去掉了以前版本中效率不高的算法。進程標識號(PID)的數目也從3.2萬升到10億。內核內部的大改變之一就是Linux的線程框架被重寫,以使NPTL可以運行其上。
並行技術發展情況
在現代操作系統裏,同一時間可能有多個內核執行流在執行,因此內核其實象多進程多線程編程一樣也需要一些同步機制來同步各執行單元對共享數據的訪問。尤其是在多處理器系統上,更需要一些同步機制來同步不同處理器上的執行單元對共享的數據的訪問。在主流的Linux內核中包含了幾乎所有現代的操作系統具有的同步機制,這些同步機制包括:原子操作、信號量(semaphore)、讀寫信號量(rw_semaphore)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4內核中)、RCU(只包含在2.6內核中)和seqlock(只包含在2.6內核中)。
隨着計算機體系結構的發展,指令級的並行和線程級的並行都在日新月異地發展着.