Python 從作業系統引入程序及併發概念

2021-10-23 14:10:35 字數 1224 閱讀 1130

顧名思義,程序即是程式執行的過程,程序是對正在執行程式的乙個抽象理解。

程序的概念起源於作業系統,是作業系統最核心的概念,也是作業系統提供的最古老也是最重要的抽象概念之一。作業系統的其他所有內容都是圍繞程序的概念展開的。所以想要真正了解程序,必須事先了解作業系統。

簡化的說作業系統就是乙個協調、管理和控制計算機硬體資源和軟體資源的控制程式。作業系統所處的位置如下圖;

細說的話,作業系統可分成兩部分功能:

系統介面與作業系統核心

隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型(系統呼叫介面)。應用程式設計師有了這些介面後,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可。

例如:作業系統提供了檔案這個抽象概念,對檔案的操作就是對磁碟的操作,

有了檔案我們無需再去考慮關於磁碟的讀寫控制,比如控制磁碟轉動,

移動磁頭讀寫資料等細節;

將應用程式對硬體資源的競態請求變得有序化,

例如:很多應用軟體其實是共享一套計算機硬體,比方說有可能有三個應用程式同時需要申請印表機來輸出內容,

那麼a程式競爭到了印表機資源就列印,然後可能是b競爭到印表機資源,也可能是c,這就導致了無序,

印表機可能列印一段a的內容然後又去列印c...

,作業系統的乙個功能就是將這種無序變得有序。

作業系統發展史

多道技術中的多道指的是多個程式,多道技術的實現是為了解決多個程式競爭或者說共享同乙個資源(比如cpu)的有序排程問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。

針對單核cpu,可實現併發效果;

現在的cpu一般是多核,每個核都會利用多道技術;

可將多個程式的**存入記憶體,它們之間是物理隔離的;

復用乙個cpu的時間片;

遇到io切換,占用cpu時間過長也切,核心在於切之前將程序的狀態儲存下來,這樣才能保證下次切換回來時,能基於上次切走的位置繼續執行;

如果我們的核心目標是想讓多個任務併發起來:那麼無論是遇到io還是沒有遇到io都應該讓cpu在多個任務之間切換起來

如果我們的核心目標是想讓多個任務的執行效率提公升:我們應該只控制乙個任務在遇到io情況下切換到另外乙個任務

作業系統 程序

在作業系統中,作業系統將記憶體,網路,檔案系統抽象為資源的統一抽象表示。1 什麼是程序 程序就是進入記憶體中正在執行的程式。把程序當做一組元素組成的實體。程序包括兩個部分,一部分是 部分,另一部分是 相關的資料集合。程序控制塊 每乙個程序,在核心中都對應著乙個程序控制塊。程序控制塊中儲存著程序的所有...

作業系統 程序

程序是作業系統中的重要概念,描述了程式的執行資訊。乙個程序就是一次執行。可以把程式想象成類,程序就是例項。引入程序的概念有利於實現多程式並行的設計。每乙個程式執行的時候可以大致分為io任務和計算任務,如果乙個程序正在io,那麼應該把cpu讓給另乙個程序執行計算任務,這樣可以提公升cpu的利用率,這就...

作業系統程序

乙個程序就是乙個正在執行的程式。它包括 程序狀態。包括 每個程序在作業系統中用程序控制塊pcb來表示,用來儲存與該程序有關的各種狀態資訊。pcb只是基本原理中的說法,對於乙個真實的作業系統可能不叫pcb,比如linux中叫做任務結構體 task struct 分時系統是在程序之間快速切換,以便使用者...