久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
偽并發
[打印本頁]
作者:
51黑tt
時間:
2016-3-5 19:53
標題:
偽并發
在本科學習過《操作系統》的同志們都知道,現代操作系統提供了一個并發控制環境,即系統中同時活動著的多個不同的進程,這些進程共享同一個CPU、內存或 I/O設備。特別是對于Linux這種世界上最先進的操作系統來說,其多任務、多用戶、分時實時混合的性質決定了多個進程在某種程度上彼此依賴或相互制約的關系,這些關系我們叫“并發關系”,按其性質可以分為同步(synchronization)和互斥(mutual exclusion)兩類。
本篇博文,我們就對同步和互斥的一些基本概念進行一下梳理,以便在以后的工作中能由一個明確的概念。
臨界資源:系統中同時存在有許多進程,它們共享各種資源,然而有許多資源在某一時刻只能允許一個進程使用。例如打印機、磁帶機等硬件設備和變量、隊列等數據結構,如果有多個進程同時去使用這類資源就會造成混亂。因此必須保護這些資源,避免兩個或多個進程同時訪問這類資源。我們把某段時間內只能允許一個進程使用的資源稱為臨界資源。
互斥:進程間相互排斥的使用臨界資源的現象,就叫互斥,很簡單。
同步:對比前面的互斥概念,還有一種并發關系叫做同步,即進程之間的關系不是相互排斥臨界資源的關系,而是相互依賴的關系。進一步的說明:就是前一個進程的輸出作為后一個進程的輸入,當第一個進程沒有輸出時第二個進程必須等待。
臨界區:幾個進程若共享同一臨界資源,它們必須以互相排斥的方式使用這個臨界資源,即當一個進程正在使用某個臨界資源且尚未使用完畢時,其它進程必須延遲對該資源的操作,當使用該資源的進程釋放該資源時,其它進程才可使用該資源,任何進程不能從中插進去使用這個臨界資源,否則將會造成信息混亂和操作出錯。我們把訪問臨界資源的代碼段稱為臨界區。
并發環境有偽并發(單處理器)和真并發(多處理器)之分,但是都會造成競爭條件。用戶空間之所以需要同步,是因為用戶程序會被調度程序搶占和重新調度。在Linux中,造成并發執行的原因大致有如下幾條:
1. 中斷
2. 軟中斷和tasklet
3. 內核搶占——任務的優先級
4. 睡眠及用戶空間的同步
5. SMP —— 多處理器
其中,1、2、3、4條屬于偽并發,第5條屬于真并發。
不管是真并發,還是偽并發,其本質都是系統中存在了獨占資源,處理而并發進程控制其實是很困難的,有以下三座大山需要解決:
1、并發進程在爭用有限的全局共享資源時容易引起沖突。
2、由于進程被調度執行的順序是動態的和隨機的,所以操作系統很難最佳的管理資源分配。
3、程序的執行結果和系統執行速度有關。
下面,我們就來看看Linux是怎么解決上述三大問題的。
首先,第一個問題,Linux是通過進程控制塊解決的,整個解決方法是圍繞一個核心數據結構—— task_struct,給所有進程規定一些狀態,并建立一系列的算法。我們會在進程控制專題中詳細討論。
第二個問題,關于資源的分配管理,主要有處理器分配、內存分配、文件系統訪問和I/O設備的使用。對于Linux來說,是通過進程調度、虛擬內存管理、文件管理和I/O設備管理模塊來解決的。我們也會在相應的專題來重點討論。
最后一個問題,其實你好好的分析一下,可以看出,這個問題其實是解決前兩個問題后所帶來的一個新問題,即Linux必須解決程序的結果與進程的執行速度及先后次序無關的問題。這,也是我們本專題重點討論的問題。
最后一個問題我們再進一步分析一下,我們要解決同步與互斥,其實本質上是要解決兩個問題:死鎖和饑餓。
死鎖的問題大家很熟悉了,這里不再贅述,我重點談談饑餓。饑餓是多進程對臨界資源互斥訪問的另一種問題,如果某種資源分配算法表面上看似很合理,但可能在一段時間內或無限期地使系統中的某些進程得不到服務,或者說這些進程訪問資源時被無限期地拒絕,我們就稱這種現象叫做“饑餓”
綜上所述,在并發程序中為了防止競爭條件,除了要做到互斥和同步外,還得保證并發進程不會出現“死鎖”、“饑餓”現象。所以,Linux提出了一下四種原則來保障并發程序的可執行性:
1、每次只允許一個進程進入臨界區
2、如果某個進程進入臨界區,其他試圖進入該臨界區的進程必須等待
3、當多個進程申請進入同一臨界區時,在有限時間內讓其中之一進入臨界區
4、位于臨界區的進程只能逗留有限時間,時間一到立即讓出
好了,關于同步與互斥最基本的概念就介紹到這里。雖然文章不長,但內容十分重要,本專題后面將具體講解Linux內核中使用的同步與互斥機制的各種實現方式,希望大家在分析每種方式的時候,都不要忘了回頭來看看這篇文章,做到實際聯系理論,感性聯系理性。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产一区二区视频在线
|
日韩视频在线一区
|
亚洲一区二区三区在线播放
|
久久国内精品
|
成人在线电影网站
|
日韩欧美第一页
|
天天澡天天狠天天天做
|
成人免费日韩
|
欧美一区二区黄
|
日日日视频
|
久久鲁视频
|
99精品网
|
欧美成人一区二区三区
|
欧美区在线
|
欧美成人精品一区二区三区
|
91免费在线视频
|
午夜一区
|
一级毛片在线播放
|
久久精品一区二区三区四区
|
在线视频一区二区
|
在线激情视频
|
福利视频一区二区
|
日韩影院在线
|
av中文字幕在线
|
欧美日韩精品综合
|
日韩精品免费视频
|
久久精品国产免费
|
红桃成人在线
|
国产欧美在线视频
|
久久国产精品久久久久
|
999热精品视频
|
caoporn国产
|
99久久99
|
操久久
|
成人在线中文字幕
|
红桃成人在线
|
黄色免费网站在线看
|
亚洲成色777777在线观看影院
|
欧美美女被c
|
女女爱爱视频
|
国产乱码精品一区二区三区五月婷
|