溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Python進程

發布時間:2020-09-24 10:14:20 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

什么是Python進程?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

進程

進程(Process)是計算機中的程序關于某數據集合上的一次運行,即正在運行的程序,是系統進行資源分配和調度的基本單位,進程是對正在運行程序的一個抽象,在早期面向進程設計的計算機結構中,進程是程序的基本執行實體,在當代面向線程設計的計算機結構中,進程是線程的容器,線程是執行的實體。進程的概念起源于操作系統,是操作系統最核心的概念,操作系統的其他所有內容都是圍繞進程的概念展開的。

在早期計算機中可以利用的cpu只有一個,為了充分利用CPU性能,提高用戶操作體驗,出現了多道技術。將一個單獨的cpu虛擬成多個cpu(多道技術:時間多路復用和空間多路復用+硬件上支持隔離),即使在一個單核CPU也能保證支持(偽)并發的能力。如果沒有進程的抽象,現代計算機將不復存在。

狹義定義:進程是正在運行的程序的實例(an instance of a computer program that is being executed)。

廣義定義:進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。

操作系統的作用:

隱藏復雜的硬件接口,提供良好的抽象接口。

管理、調度進程,使多個進程對硬件的競爭變得有序。

多道技術:針對早期單核CPU,實現多個程序的并發執行,現在的主機一般是多核,每個核都會利用多道技術,如有4個cpu,運行于cpu1的某個程序遇到io阻塞,會等到io結束再重新調度,重新調度是可能會被調度到4個cpu中的任意一個,具體由操作系統調度算法決定。

多道技術的主要特性如下:  

(1)空間上的復用:內存中可以同時有多道程序。

(2)物理隔離:多個程序在內存中都有各自獨立的內存空間,互不影響。

(3)時間上的復用:多個程序在操作系統的調度算法下,在不同的時間段內分別占有CPU資源。

需要注意的是如果一個進程長時間占用CPU資源,操作系統會強制將CPU資源分配給其它在就緒隊列中的程序,避免一個程序長時間占有CPU資源,導致其它程序無法運行。

關于進程的一些概念:

第一,進程是一個實體。每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。文本區域存儲處理器執行的代碼,數據區域存儲變量和進程執行期間使用的動態分配的內存,堆棧區域存儲著活動過程調用的指令和本地變量。

第二,進程是一個“執行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統將程序加載到內存),它才能成為一個活動的實體,我們稱其為進程。

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

進程的特性:

動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。

并發性:任何進程都可以同其他進程一起并發執行

獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;

異步性:由于進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進

結構特征:進程由程序、數據和進程控制塊三部分組成。

多個不同的進程可以包含相同的程序,一個程序在不同的數據集里就構成不同的進程,能得到不同的結果,但是執行過程中,程序不能發生改變。

進程與程序的區別:

程序是指令和數據的有序集合,是對指令、數據及其組織形式的描述,其本身沒有任何運行的含義,是一個靜態的概念。而進程是程序在處理機上的一次執行過程,它是一個動態的概念。

程序可以作為一種軟件資料長期存在,而進程是有一定生命期的。程序是永久的,進程是暫時的。

進程的調度:

要想多個進程交替運行,操作系統必須對這些進程進行調度,這個調度也不是隨機進行的,而是需要遵循一定的法則,由此就有了進程的調度算法。

1、先來先服務算法

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

2、短作業優先調度算法

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

3、時間片輪轉法

時間片輪轉(Round Robin,RR)法的基本思路是讓每個進程在就緒隊列中的等待時間與享受服務的時間成比例。在時間片輪轉法中,需要將CPU的處理時間分成固定大小的時間片,例如,幾十毫秒至幾百毫秒。如果一個進程在被調度選中之后用完了系統規定的時間片,但又未完成要求的任務,則它自行釋放自己所占有的CPU而排到就緒隊列的末尾,等待下一次調度。同時,進程調度程序又去調度當前就緒隊列中的第一個進程。

顯然,輪轉法只能用來調度分配一些可以搶占的資源。這些可以搶占的資源可以隨時被剝奪,而且可以將它們再分配給別的進程。CPU是可搶占資源的一種。但打印機等資源是不可搶占的。由于作業調度是對除了CPU之外的所有系統硬件資源的分配,其中包含有不可搶占資源,所以作業調度不使用輪轉法。

在輪轉法中,時間片長度的選取非常重要。首先,時間片長度的選擇會直接影響到系統的開銷和響應時間。如果時間片長度過短,則調度程序搶占處理機的次數增多。這將使進程上下文切換次數也大大增加,從而加重系統開銷。反過來,如果時間片長度選擇過長,例如,一個時間片能保證就緒隊列中所需執行時間最長的進程能執行完畢,則輪轉法變成了先來先服務法。時間片長度的選擇是根據系統對響應時間的要求和就緒隊列中所允許最大的進程數來確定的。

在輪轉法中,加入到就緒隊列的進程有3種情況:

(1)一種是分給它的時間片用完,但進程還未完成,回到就緒隊列的末尾等待下次調度去繼續執行。

(2)另一種情況是分給該進程的時間片并未用完,只是因為請求I/O或由于進程的互斥與同步關系而被阻塞。當阻塞解除之后再回到就緒隊列。

(3)第三種情況就是新創建進程進入就緒隊列。

如果對這些進程區別對待,給予不同的優先級和時間片從直觀上看,可以進一步改善系統服務質量和效率。例如,我們可把就緒隊列按照進程到達就緒隊列的類型和進程被阻塞時的阻塞原因分成不同的就緒隊列,每個隊列按FCFS原則排列,各隊列之間的進程享有不同的優先級,但同一隊列內優先級相同。這樣,當一個進程在執行完它的時間片之后,或從睡眠中被喚醒以及被創建之后,將進入不同的就緒隊列。

多級反饋隊列:

前面介紹的各種用作進程調度的算法都有一定的局限性。如短進程優先的調度算法,僅照顧了短進程而忽略了長進程,而且如果并未指明進程的長度,則短進程優先和基于進程長度的搶占式調度算法都將無法使用。

而多級反饋隊列調度算法則不必事先知道各種進程所需的執行時間,而且還可以滿足各種類型進程的需要,因而它是目前被公認的一種較好的進程調度算法。在采用多級反饋隊列調度算法的系統中,調度算法的實施過程如下所述。

(1) 應設置多個就緒隊列,并為各個隊列賦予不同的優先級。第一個隊列的優先級最高,第二個隊列次之,其余各隊列的優先權逐個降低。該算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。

(2) 當一個新進程進入內存后,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在一個時間片結束時尚未完成,調度程序便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片后仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列后,在第n 隊列便采取按時間片輪轉的方式運行。

(3) 僅當第一隊列空閑時,調度程序才調度第二隊列中的進程運行;僅當第1~(i-1)隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。

關于什么是Python進程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女