python:進程,python進程

來源:互聯網
上載者:User

python:進程,python進程
一、作業系統的發展

1,電腦誕生的初期是沒有作業系統 ,程式員將對應於程式和資料的已穿孔的紙帶(或卡片)裝入輸入機,然後啟動輸入機把程式和資料輸入電腦記憶體,接著通過控制台開關啟動程式針對資料運行;
計算完畢,印表機輸出計算結果;使用者取走結果並卸下紙帶(或卡片)後,才讓下一個使用者上機。
手工操作方式兩個特點:  (1)使用者獨佔全機。不會出現因資源已被其他使用者佔用而等待的現象,但資源的利用率低。  (2)CPU 等待手工操作。CPU的利用不充分。   2,後來為了提升運行效率,就出現了批處理系統 。批處理系統:載入在電腦上的一個系統軟體,在它的控制下,電腦能夠自動地、成批地處理一個或多個使用者的作業(這作業包括程式、資料和命令)。  批處理系統——串列、速度快
   聯機批處理 讀磁帶的時候速度快
離線批處理 讀磁帶和cpu工作並發
3,所謂多道程式設計技術,就是指允許多個程式同時進入記憶體並運行。即同時把多個程式放入記憶體,並允許它們交替在CPU中運行,它們共用系統中的各種硬、軟體資源。
當一道程式因I/O請求而暫停運行時,CPU便立即轉去運行另一道程式。
  多道程式系統 —— 並行
作業系統的各種管理功能
時空的複用 : 空間隔離開來,cpu看起來可以處理多個任務
4,分時技術:把處理機的已耗用時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。
分時系統 —— 更好的實現了 並行
讓cpu的工作效率下降了
5,即時系統
即時系統可分成兩類:    (1)即時控制系統。當用于飛機飛行、飛彈發射等的自動控制時,要求電腦能儘快處理測量系統測得的資料,及時地對飛機或飛彈進行控制,或將有關資訊通過顯示終端提供給決策人員。當用於軋鋼、石化等工業生產過程式控制制時,也要求電腦能及時處理由各類感應器送來的資料,然後控制相應的執行機構。    (2)即時資訊處理系統。當用於預定飛機票、查詢有關航班、航線、票價等事宜時,或當用於銀行系統、情報檢索系統時,都要求電腦能對終端裝置發來的服務要求及時予以正確的回答。此類對響應及時性的要求稍弱於第一類。  即時作業系統的主要特點:  (1)及時響應。每一個資訊接收、分析處理和發送的過程必須在嚴格的時間限制內完成。  (2)高可靠性。需採取冗餘措施,雙機系統前後台工作,也包括必要的保密措施等   6,作業系統的三種基本類型:多道批處理系統、分時系統、即時系統。  通用作業系統:具有多種類型操作特徵的作業系統。可以同時兼有多道批處理、分時、即時處理的功能,或其中兩種以上的功能。
7,作業系統的功能
封裝了對硬體的操作過程,給應用程式提供好用的介面
對多個作業進行調度管理來分配硬體資源
二、進程

1,什麼是進程

進程(Process)是電腦中的程式關於某資料集合上的一次運行活動,是系統進行資源分派和調度的基本單位,是作業系統結構的基礎

2,作業系統與進程的關係

進程是作業系統中最基本、重要的概念。是多道程式系統出現後,為了刻畫系統內部出現的動態情況,
描述系統內部各道程式的活動規律引進的一個概念,所有多道程式設計作業系統都建立在進程的基礎上。

3,進程是怎麼被調度的?

  1)先來先服務調度演算法

先來先服務(FCFS)調度演算法是一種最簡單的調度演算法,該演算法既可用於作業調度,也可用於進程調度。FCFS演算法比較有利於長作業(進程),而不利於短作業(進程)。由此可知,本演算法適合於CPU繁忙型作業,而不利於I/O繁忙型的作業(進程)。
先來先服務(FCFS)

  2)短作業優先調度演算法

短作業(進程)優先調度演算法(SJ/PF)是指對短作業或短進程優先調度的演算法,該演算法既可用於作業調度,也可用於進程調度。但其對長作業不利;不能保證緊迫性作業(進程)被及時處理;作業的長短只是被估算出來的。
短作業(進程)優先調度演算法(SJ/PF)

  3)時間片輪轉法

時間片輪轉(Round Robin,RR)法的基本思路是讓每個進程在就緒隊列中的等待時間與享受服務的時間成比例。在時間片輪轉法中,需要將CPU的處理時間分成固定大小的時間片,例如,幾十毫秒至幾百毫秒。如果一個進程在被調度選中之後用完了系統規定的時間片,但又未完成要求的任務,則它自行釋放自己所佔有的CPU而排到就緒隊列的末尾,等待下一次調度。同時,進程發送器又去調度當前就緒隊列中的第一個進程。      顯然,輪轉法只能用來調度分配一些可以搶佔的資源。這些可以搶佔的資源可以隨時被剝奪,而且可以將它們再分配給別的進程。CPU是可搶佔資源的一種。但印表機等資源是不可搶佔的。由於作業調度是對除了CPU之外的所有系統硬體資源的分配,其中包含有不可搶佔資源,所以作業調度不使用輪轉法。在輪轉法中,時間片長度的選取非常重要。首先,時間片長度的選擇會直接影響到系統的開銷和回應時間。如果時間片長度過短,則發送器搶佔處理機的次數增多。這將使進程環境切換次數也大大增加,從而加重系統開銷。反過來,如果時間片長度選擇過長,例如,一個時間片能保證就緒隊列中所需執行時間最長的進程能執行完畢,則輪轉法變成了先來先服務法。時間片長度的選擇是根據系統對回應時間的要求和就緒隊列中所允許最大的進程數來確定的。      在輪轉法中,加入到就緒隊列的進程有3種情況:      一種是分給它的時間片用完,但進程還未完成,回到就緒隊列的末尾等待下次調度去繼續執行。      另一種情況是分給該進程的時間片並未用完,只是因為請求I/O或由於進程的互斥與同步關係而被阻塞。當阻塞解除之後再回到就緒隊列。      第三種情況就是新建立進程進入就緒隊列。      如果對這些進程區別對待,給予不同的優先順序和時間片從直觀上看,可以進一步改善系統服務品質和效率。例如,我們可把就緒隊列按照進程到達就緒隊列的類型和進程被阻塞時的阻塞原因分成不同的就緒隊列,每個隊列按FCFS原則排列,各隊列之間的進程享有不同的優先順序,但同一隊列內優先順序相同。這樣,當一個進程在執行完它的時間片之後,或從睡眠中被喚醒以及被建立之後,將進入不同的就緒隊列。  時間片輪轉法
時間片輪轉法

  4)

前面介紹的各種用作進程調度的演算法都有一定的局限性。如短進程優先的調度演算法,僅照顧了短進程而忽略了長進程,而且如果並未指明進程的長度,則短進程優先和基於進程長度的搶佔式調度演算法都將無法使用。而多級反饋隊列調度演算法則不必事Crowdsourced Security Testing道各種進程所需的執行時間,而且還可以滿足各種類型進程的需要,因而它是目前被公認的一種較好的進程調度演算法。在採用多級反饋隊列調度演算法的系統中,調度演算法的實施過程如下所述。(1) 應設定多個就緒隊列,並為各個隊列賦予不同的優先順序。第一個隊列的優先順序最高,第二個隊列次之,其餘各隊列的優先權逐個降低。該演算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。(2) 當一個新進程進入記憶體後,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在一個時間片結束時尚未完成,發送器便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片後仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列後,在第n 隊列便採取按時間片輪轉的方式運行。(3) 僅當第一隊列空閑時,發送器才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶佔正在運行進程的處理機,即由發送器把正在啟動並執行進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。
多級反饋隊列

4,進程的並行與並發

並行 : 並行是指兩者同時執行,比如賽跑,兩個人都在不停的往前跑;(資源夠用,比如三個線程,四核的CPU )並發 : 並發是指資源有限的情況下,兩者交替輪流使用資源,比如一段路(單核CPU資源)同時只能過一個人,A走一段後,讓給B,B用完繼續給A ,交替使用,目的是提高效率。區別:並行是從微觀上,也就是在一個精確的時間片刻,有不同的程式在執行,這就要求必須有多個處理器。並發是從宏觀上,在一個時間段上可以看出是同時執行的,比如一個伺服器同時處理多個session。

5,同步非同步阻塞非阻塞

  1)狀態介紹

   (1)就緒(Ready)狀態

   當進程已指派到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的進程             狀態稱為就緒狀態。 

   (2)執行/運行(Running)狀態

   當進程已獲得處理機,其程式正在處理機上執行,此時的進程狀態稱為執行狀態。

   (3)阻塞(Blocked)狀態

     正在執行的進程,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起      進程阻塞的事件可有多種,例如,等待I/O完成、申請緩衝區不能滿足、等待信件(訊號)等。

  2)同步和非同步

所謂同步就是一個任務的完成需要依賴另外一個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的工作順序。要麼成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。所謂非同步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工作,依賴的任務也立即執行,只要自己完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴它的任務無法確定,所以它是不可靠的工作順序。

  3)阻塞與非阻塞

   阻塞和非阻塞這兩個概念與程式(線程)等待訊息通知(無所謂同步或者非同步)時的狀態有關。也就是說阻塞與非阻塞主要是程式(線程)等待訊息通知時的狀態角度來說的

  4)同步/非同步與阻塞/非阻塞

1,同步阻塞形式  效率最低。拿上面的例子來說,就是你專心排隊,什麼別的事都不做。,2,非同步阻塞形式  如果在銀行等待辦理業務的人採用的是非同步方式去等待訊息被觸發(通知),也就是領了一張小紙條,假如在這段時間裡他不能離開銀行做其它的事情,那麼很顯然,這個人被阻塞在了這個等待的操作上面;  非同步作業是可以被阻塞住的,只不過它不是在處理訊息時阻塞,而是在等待訊息通知時被阻塞。3,同步非阻塞形式  實際上是效率低下的。  想象一下你一邊打著電話一邊還需要抬頭看到底隊伍排到你了沒有,如果把打電話和觀察排隊的位置看成是程式的兩個操作的話,這個程式需要在這兩種不同的行為之間來回的切換,效率可想而知是低下的。4,非同步非阻塞形式  效率更高,  因為打電話是你(等待者)的事情,而通知你則是櫃檯(訊息觸發機制)的事情,程式沒有在兩種不同的操作中來回切換。  比如說,這個人突然發覺自己煙癮犯了,需要出去抽根煙,於是他告訴大堂經理說,排到我這個號碼的時候麻煩到外面通知我一下,那麼他就沒有被阻塞在這個等待的操作上面,自然這個就是非同步+非阻塞的方式了。
同步/非同步與阻塞/非阻塞

6,進程的建立與結束

1),建立進程有很多方式 —— 就是讓一個程式運行起來

 對於通用系統(跑很多應用程式),需要有系統運行過程中建立或撤銷進程的能力,主要分為4中形式建立新的進程:

    1. 系統初始化(查看進程linux中用ps命令,windows中用工作管理員,前台進程負責與使用者互動,後台啟動並執行進程與使用者無關,運行在後台並且只在需要時才喚醒的進程,稱為守護進程,如電子郵件、web頁面、新聞、列印)

  2. 一個進程在運行過程中開啟了子進程(如nginx開啟多進程,os.fork,subprocess.Popen等)

  3. 使用者的互動式請求,而建立一個新進程(如使用者雙擊暴風影音)

  4. 一個批次工作的初始化(只在大型主機的批處理系統中應用)

 2)進程的結束

  1,正常退出
  2,出錯退出
  3,嚴重錯誤
  4,被其他進程殺死

樣本:
import osimport timefrom multiprocessing import Process #調用multiprocessing模組建立進程def func(i):    time.sleep(1)    print('%d:子進程%d乾的事,父進程:%d'%(i,os.getpid(),os.getppid()))#getpid是得到子進程的進程號,getppid是得到父進程的進程號。if __name__=='__main__':    p_lst=[]    for i in range(10):        p =Process(target=func,args=(i,))#建立一個進程,使用func程式,i 表示序號。        print(p)        p.start()#p.start 運行進程        p_lst.append(p) #將進程的地址加入到p_lst列表中    for l in p_lst:l.join()#l.join()等待進程運行結束。    print('__主進程__')

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.