• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      計算機中的多線程問題

      2013-08-15 00:52:53
      科技傳播 2013年22期
      關(guān)鍵詞:同步控制內(nèi)核線程

      張 蕊

      天津師范大學(xué)計算機與信息工程學(xué)院,天津 300387

      1 多線程的相關(guān)概述

      1.1 進程與線程的區(qū)別

      對并行計算的研究是當代高效計算機系統(tǒng)設(shè)計中至關(guān)重要的一部分,并行的效果往往依賴于支持并行性的系統(tǒng)所提供的并發(fā)機制。進程是計算機資源分配的單位。一個大任務(wù)一般可以分成多個子任務(wù), 這些子任務(wù)的執(zhí)行組成了整個任務(wù)功能。線程和進程的區(qū)別主要存在于創(chuàng)建線程的階段, 線程相較于進程并不是復(fù)制父進程映象, 而是和父進程一起實現(xiàn)共享。多個線程一起共享各種資源和同一地址空間, 不同的只有代碼段和私有棧。因此創(chuàng)建線程和調(diào)度線程的費用與原來的方式相比明顯降低了。

      1.2 線程

      所謂線程(thread),簡單地說就是指進程中的單一順序控制流(a thread is a single stream of execution with in a process)。線程是程序的一個調(diào)度單位,同時也是計算機科學(xué)領(lǐng)域的術(shù)語之一。線程的另一個別稱是輕量級進程(lightweight processes)。線程往往有自己的寄存器集、局部線程變量、棧、線程說明數(shù)據(jù)、程序計數(shù)器、狀態(tài)信息以及線程說明信號掩碼。一個進程里的多個線程之間往往要共享同樣的的地址空間并共同構(gòu)成一個大的進程,線程執(zhí)行的基礎(chǔ)是要先有進程的執(zhí)行,也就是說線程其實是無法獨立執(zhí)行的。

      1.3 多線程

      多線程是從硬件或軟件上實現(xiàn)多個線程并發(fā)執(zhí)行的一種技術(shù)。有多線程能力的計算機往往具有強大的硬件支持,因而能夠同時運行多于一個的線程,進而提升了整體處理的效能。引進多線程具有一定的必要性,因為多線程具有諸多優(yōu)點。多線程可以提高系統(tǒng)的吞吐率和程序的響應(yīng)效率,同時有助于改善程序的結(jié)構(gòu),從而使用戶能夠更加有效地利用好系統(tǒng)的資源。此外,多線程在降低資源的占用和加強用戶間通信效果等諸多方面也有積極的作用。例如,我們在word 中打印文件的過程,對文件的編輯并不會影響到對文件的打印,編輯操作和打印操作其實是異步執(zhí)行的,或者可以理解為打印操作是在后臺完成的。這是因為系統(tǒng)創(chuàng)建了兩個獨立線程來分別完成對文件的編輯和對文件的打印,同時規(guī)定負責(zé)編輯文檔的線程的優(yōu)先級要高于負責(zé)打印文檔的線程。在我們實際的應(yīng)用中,多線程的方法非常適合用于解決多個獨立任務(wù)組成的問題。

      2 線程的分類

      2.1 用戶級線程

      用戶級線程(user level threads)是由用戶程序來負責(zé)管理的,傳統(tǒng)的操作系統(tǒng)內(nèi)核只負責(zé)對進程的管理。

      操作系統(tǒng)通常會提供一個能夠在用戶空間里執(zhí)行的線程庫,以方便用戶程序?qū)τ谟脩艏壘€程的管理工作。這個能夠在用戶空間里執(zhí)行的線程庫提供了包括線程的創(chuàng)建、線程的調(diào)度、線程的執(zhí)行、線程的撤銷、線程間通信以及存儲上下文在內(nèi)的一些功能。有了線程庫提供的這些功能,用戶級線程的實現(xiàn)就不再需要操作系統(tǒng)給予其他的特殊支持了。此外,對于操作系統(tǒng)分配的用戶堆棧和用戶寄存器,用戶級進程只能使用其所屬進程被分配的用戶堆棧和用戶寄存器。

      用戶級線程的上下文切換與內(nèi)核無關(guān),所以可能存在相關(guān)進程的狀態(tài)是阻塞或等待的,而屬于該進程的線程狀態(tài)卻是執(zhí)行情況。

      2.2 核心級線程

      核心及線程與用戶級線程的不同之處在于,前者不僅可以在同一個處理機上被并發(fā)執(zhí)行,還可以在不同處理機上被并行執(zhí)行。所以操作系統(tǒng)內(nèi)核在負責(zé)同一進程內(nèi)部的不同線程的調(diào)度工作的同時,可能也要進行不同進程之間的調(diào)度工作。這種工作機制有效地避免線程處于執(zhí)行狀態(tài)、進程處于等待或阻塞狀態(tài)的情況發(fā)生。而另外,為了達到提高操作系統(tǒng)內(nèi)核程序執(zhí)行效率的效果,核心級線程技術(shù)也會用于內(nèi)核程序自身。綜上,和用戶級線程進行比較,核心級線程在上下文切換上所用的時間要大于用戶級線程。

      3 JAVA 中的多線程機制

      3.1 JAVA 中線程的創(chuàng)建

      在JAVA 語言中,可采用兩種方式產(chǎn)生線程。第一種方法是繼承,即通過繼承Thread 類的方法,重寫和覆蓋部分方法run(),然后即可創(chuàng)建和啟用自己定義的線程實例,當然這些線程實例是在應(yīng)用程序類里創(chuàng)建和啟動的。另一種方法是實現(xiàn)Runnable 接口。這種方法也是目前是非常常用的創(chuàng)建線程的方法之一,它打破了第一種方法(即繼承Thread 類)受到的的限制。在JAVA 的類庫里,Runnable 接口中僅僅包含了一個run()方法。所有對象,只要屬于能夠?qū)崿F(xiàn)該接口的類,就應(yīng)該可以用線程的方式執(zhí)行。當然,只是對類進行聲明是無法對任何對線程提供支持的,因此還需要對Thread 類實例進行創(chuàng)建。

      3.2 JAVA 對多線程的同步控制

      JAVA 對多線程同步控制的方法主要是圍繞關(guān)鍵字synchronized 展開,并配合wait、sleep、notify 等方法,來實現(xiàn)類似操作系統(tǒng)中PV 原語的信號量機制。因此將JAVA 對多線程的同步控制步驟歸納如下:

      1) 對需要同步保護的幾個方法或代碼段增加synchronized 限制符,這就是加鎖的過程;

      2)對增加了synchronized 限制符的方法或代碼中配合使用wait、sleep 等阻塞方法,來實現(xiàn)需要的功能;

      3)在增加了synchronized 限制符的代碼或方法最后用notif 或notifyall 等方法喚醒阻塞中的線程,實現(xiàn)線程間的通信。

      目前,對計算機中多線程問題的研究主要應(yīng)用于局域網(wǎng)服務(wù)器中的文件管理或通信控制、WWW 服務(wù)器的多線程并發(fā)研究兩個方面。在局域網(wǎng)服務(wù)器的文件管理中,服務(wù)器進程會派生出相應(yīng)的線程來處理用戶訪問文件的要求。為了能夠應(yīng)對同時接受到多個訪問文件要求的情況,操作系統(tǒng)可以采取派生出多個線程的方法進行處理。當計算機的系統(tǒng)是多處理的情況下,線程還能在不同處理機上被執(zhí)行。www 服務(wù)器分為重復(fù)服務(wù)器和并發(fā)服務(wù)器。重復(fù)服務(wù)器一般面向能在短時間內(nèi)處理完成的請求, 并且是由服務(wù)器來對這些請求進行處理的。并發(fā)服務(wù)器則面向那些處理完成時間不定長的請求, 由服務(wù)器的進程或線程來處理每個請求。

      [1]張玉蓉,藍雯飛.Java的多線程技術(shù)探討[J].計算機教育,2006(4).

      [2]http://uule.iteye.com/blog/1106710.

      猜你喜歡
      同步控制內(nèi)核線程
      萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
      Linux內(nèi)核mmap保護機制研究
      基于EtherCAT網(wǎng)絡(luò)的金剛線多線切割機雙主軸同步控制
      淺談linux多線程協(xié)作
      基于云模型的舵機同步控制
      基于廣義預(yù)測的雙轉(zhuǎn)動掃描系統(tǒng)同步控制
      一個具有完全四翼形式的四維混沌系統(tǒng)同步控制
      Linux線程實現(xiàn)技術(shù)研究
      喀什市| 元江| 张家界市| 竹北市| 桂东县| 南开区| 白水县| 安化县| 福建省| 调兵山市| 上杭县| 松滋市| 延安市| 长沙县| 道孚县| 嵩明县| 会宁县| 孟津县| 名山县| 资中县| 达州市| 贞丰县| 日土县| 新兴县| 仲巴县| 常宁市| 高要市| 连州市| 渝中区| 马公市| 大方县| 栾川县| 都昌县| 澜沧| 资阳市| 阿合奇县| 大新县| 磐安县| 盐津县| 西华县| 长治县|